diff --git a/InvenTree/locale/bg/LC_MESSAGES/django.po b/InvenTree/locale/bg/LC_MESSAGES/django.po
index 3ae0347050c7..ee417cc745a2 100644
--- a/InvenTree/locale/bg/LC_MESSAGES/django.po
+++ b/InvenTree/locale/bg/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:42\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Bulgarian\n"
"Language: bg_BG\n"
@@ -51,18 +51,18 @@ msgstr "Подробности за грешката могат да се нам
msgid "Enter date"
msgstr "Въведи дата"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Въведи дата"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Бележки"
@@ -127,42 +127,42 @@ msgstr "Въведеният домейн на електронната поща
msgid "Registration is disabled."
msgstr "Регистрацията е деактивирана."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Въведена е недопустима стойност"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Липсва сериен номер"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Повтарящ се сериен номер"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr "Невалиден диапазон от групи: {group}"
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr ""
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Не са открити серийни номера"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Премахнете HTML маркерите от тази стойност"
@@ -386,7 +386,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr ""
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr ""
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Потребител"
@@ -474,9 +474,9 @@ msgstr ""
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr ""
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr ""
@@ -500,8 +500,8 @@ msgstr ""
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr ""
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr ""
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr ""
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "родител"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr ""
@@ -576,104 +576,104 @@ msgstr ""
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr ""
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr ""
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr ""
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr ""
@@ -813,7 +813,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr ""
@@ -833,7 +833,7 @@ msgstr ""
msgid "Build order output rejected"
msgstr ""
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr ""
@@ -933,14 +933,14 @@ msgstr ""
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr ""
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr ""
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr ""
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr ""
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr ""
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr ""
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Част"
@@ -1099,7 +1099,7 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr ""
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr ""
@@ -1258,27 +1258,32 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr ""
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr ""
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr ""
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr ""
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr ""
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr ""
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr ""
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr ""
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr ""
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr ""
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr ""
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr ""
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr ""
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr ""
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr ""
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr ""
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr ""
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr ""
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr ""
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr ""
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr ""
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr ""
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr ""
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr ""
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
@@ -3953,7 +3967,7 @@ msgstr ""
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr ""
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr ""
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr ""
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr ""
msgid "Select supplier"
msgstr ""
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr ""
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr ""
@@ -4199,13 +4213,13 @@ msgstr ""
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr ""
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr ""
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr ""
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr ""
@@ -4809,7 +4823,7 @@ msgstr ""
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr ""
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr ""
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr ""
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr ""
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr ""
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr "Цялостна наличност"
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -5919,7 +5937,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr ""
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr ""
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr ""
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr ""
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr "Наличност"
@@ -7448,7 +7482,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr ""
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr ""
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr ""
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/cs/LC_MESSAGES/django.po b/InvenTree/locale/cs/LC_MESSAGES/django.po
index 92178bf6e9da..c65070fdda34 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:42\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Language: cs_CZ\n"
@@ -51,18 +51,18 @@ msgstr "Podrobnosti o chybě lze nalézt v panelu administrace"
msgid "Enter date"
msgstr "Zadejte datum"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Zadejte datum"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Poznámky"
@@ -127,42 +127,42 @@ msgstr "Zadaná e-mailová doména není povolena."
msgid "Registration is disabled."
msgstr "Registrace vypnuta."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Vyplněno neplatné množství"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Nevyplněné výrobní číslo"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Duplicitní výrobní číslo"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr "Neplatný rozsah skupiny: {group}"
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Rozsah skupiny {group} překračuje povolené množství ({expected_quantity})"
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr "Neplatná sekvence skupiny: {group}"
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Nenalezena žádná výrobní čísla"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Počet jedinečných sériových čísel ({len(serials)}) musí odpovídat množství ({expected_quantity})"
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Odstranit HTML tagy z této hodnoty"
@@ -386,7 +386,7 @@ msgstr "Chybějící soubor"
msgid "Missing external link"
msgstr "Chybějící externí odkaz"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Příloha"
msgid "Select file to attach"
msgstr "Vyberte soubor k přiložení"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Komentář"
msgid "File comment"
msgstr "Komentář k souboru"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Uživatel"
@@ -474,9 +474,9 @@ msgstr "Duplicitní názvy nemohou existovat pod stejným nadřazeným názvem"
msgid "Invalid choice"
msgstr "Neplatný výběr"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Neplatný výběr"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Název"
@@ -500,8 +500,8 @@ msgstr "Název"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Název"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Název"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Popis"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "nadřazený"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Cesta"
@@ -576,104 +576,104 @@ msgstr "Chyba serveru"
msgid "An error has been logged by the server."
msgstr "Server zaznamenal chybu."
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Musí být platné číslo"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Měna"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr "Vyberte měnu z dostupných možností"
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr "Nemáte oprávnění měnit tuto uživatelskou roli."
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr "Pouze superuživatelé mohou vytvářet nové uživatele"
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr "Váš účet byl vytvořen."
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr "Pro přihlášení použijte funkci obnovení hesla"
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr "Vítejte v InvenTree"
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Název souboru"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Neplatná hodnota"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "Datový soubor"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Vyberte datový soubor k nahrání"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Nepodporovaný typ souboru"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "Soubor je příliš velký"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "V souboru nebyly nalezeny žádné sloupce"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "V souboru nebyly nalezeny žádné řádky s daty"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Nebyly zadány žádné řádky s daty"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Nebyly zadány žádné sloupce s daty"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Chybí povinný sloupec: '{name}'"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Duplicitní sloupec: '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr "Vzdálený obraz"
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "URL souboru vzdáleného obrázku"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "Stahování obrázků ze vzdálené URL není povoleno"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Kontrola procesů na pozadí se nezdařila"
@@ -813,7 +813,7 @@ msgstr "Rozdělit od nadřazené položky"
msgid "Split child item"
msgstr "Rozdělit podřazený předmět"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Sloučené položky zásob"
@@ -833,7 +833,7 @@ msgstr "Výstup objednávky sestavení dokončen"
msgid "Build order output rejected"
msgstr "Výstup objednávky sestavení byl odmítnut"
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr "Spotřebováno podle objednávky"
@@ -933,14 +933,14 @@ msgstr "O InvenTree"
msgid "Build must be cancelled before it can be deleted"
msgstr "Sestavení musí být zrušeno před odstraněním"
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr "Spotřební materiál"
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr "Přiděleno"
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr "Dostupné"
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Vytvořit objednávku"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "Referenční číslo objednávky"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "Příkaz sestavení pro který je toto sestavení přiděleno"
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "Příkaz sestavení pro který je toto sestavení přiděleno"
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "Příkaz sestavení pro který je toto sestavení přiděleno"
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Díl"
@@ -1099,7 +1099,7 @@ msgstr "Referenční číslo prodejní objednávky"
msgid "SalesOrder to which this build is allocated"
msgstr "Prodejní příkaz, kterému je tato verze přidělena"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "Stav sestavení"
msgid "Build status code"
msgstr "Stavový kód sestavení"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "Kód dávky"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "Dávkový kód pro tento výstup sestavení"
@@ -1258,27 +1258,32 @@ msgstr "Výstup sestavení je již dokončen"
msgid "Build output does not match Build Order"
msgstr "Výstup sestavení neodpovídá příkazu sestavení"
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr "Množství musí být vyšší než nula"
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr "Množství nemůže být větší než výstupní množství"
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr "Vytvořit objekt"
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr "Vytvořit objekt"
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr "Vytvořit objekt"
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr "Vytvořit objekt"
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "Množství"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr "Vyžadované množství pro objednávku"
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Položka sestavení musí specifikovat výstup sestavení, protože hlavní díl je označen jako sledovatelný"
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr "Zabrané množství ({q}) nesmí překročit dostupné skladové množství ({a})"
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr "Skladová položka je nadměrně zabrána"
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr "Zabrané množství musí být větší než nula"
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr "Množství musí být 1 pro zřetězený sklad"
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr "Vybraná položka zásob neodpovídá řádku BOM"
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr "Vybraná položka zásob neodpovídá řádku BOM"
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "Skladové položky"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr "Zdrojová skladová položka"
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr "Skladové množství pro sestavení"
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr "Instalovat do"
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr "Vytvořit výstup"
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr "Vytvořený výstup neodpovídá nadřazenému sestavení"
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "Sériová čísla"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr "Automaticky zvolit sériová čísla"
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr ""
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr "Lokace"
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr "Umístění zásob pro seškrábnuté výstupy"
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "Stav"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr ""
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr ""
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr "Vynechat lokace"
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr "Volitelné položky"
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr ""
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr ""
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr ""
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr "Jméno společnosti"
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr "Výchozí měna"
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr "Stáhnout z URL"
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr ""
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr "Možné zakoupit"
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr "Díly jsou zakoupitelné ve výchozím nastavení"
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr "Prodejné"
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr "Díly jsou prodejné ve výchozím nastavení"
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr "Sledovatelné"
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr "Díly jsou sledovatelné ve výchozím nastavení"
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr "Nehmotné (virtuální)"
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr "Díly jsou nehmotné (virtuální) ve výchozím nastavení"
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr "Zobrazit Import v zobrazeních"
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr "Zobrazit související díly"
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr "Zobrazit související díly pro díl"
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr "Počáteční údaje zásob"
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr "Povolit vytvoření počátečního skladu při přidání nové části"
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr "Počáteční údaje dodavatele"
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr "Povolit vytvoření počátečních dat dodavatele při přidávání nového dílu"
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr "Formát zobrazení jména dílu"
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr "Formát pro zobrazení názvu dílu"
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr "Výchozí ikona kategorie dílu"
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr "Výchozí ikona kategorie dílu (prázdné znamená bez ikony)"
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr "Minimální počet desetinných míst u cen"
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr "Minimální počet desetinných míst k zobrazení u cenových údajů"
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr "Maximální počet desetinných míst u cen"
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr "Maximální počet desetinných míst k zobrazení u cenových údajů"
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr "Použít ceny dodavatele"
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr "Přepsání historie nákupu"
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr "Velikost stránky"
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr "Výchozí velikost stránky pro PDF reporty"
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr "Povolit testovací reporty"
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr "Povolit generování zkušebních reportů"
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr "Připojit testovací reporty"
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr "Při tisku testovacího reportu, připojte kopii reportu k přidružené skladové položce"
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr "Sériová čísla pro skladové položky musí být globálně unikátní"
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr "Automaticky vyplnit sériová čísla"
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr "Automaticky vyplnit sériová čísla ve formulářích"
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr "Odstranit vyčerpané zásoby"
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr "Určuje výchozí chování, když je vyčerpána skladová položka"
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr ""
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr "Formát data"
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr "Cena"
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr "Id"
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr "Obrazek"
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr "Společnost"
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Základní díl"
@@ -3953,7 +3967,7 @@ msgstr "Zvolte díl"
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr "Vyberte výrobce"
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr "Název parametru"
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr "Hodnota"
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr "Hodnota parametru"
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr ""
msgid "Select supplier"
msgstr ""
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr ""
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr ""
@@ -4199,13 +4213,13 @@ msgstr "Smazat obrázek"
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr "Zákazník"
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr ""
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr ""
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr ""
@@ -4809,7 +4823,7 @@ msgstr ""
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr ""
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr ""
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr ""
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr ""
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr ""
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -5919,7 +5937,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr ""
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr ""
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr ""
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr ""
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -7448,7 +7482,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr ""
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr ""
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr "Domovská stránka"
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "Potvrdit"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/da/LC_MESSAGES/django.po b/InvenTree/locale/da/LC_MESSAGES/django.po
index 9fd3a812d61a..96d23fc6fc4f 100644
--- a/InvenTree/locale/da/LC_MESSAGES/django.po
+++ b/InvenTree/locale/da/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:42\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Danish\n"
"Language: da_DK\n"
@@ -51,18 +51,18 @@ msgstr "Fejloplysninger kan findes i admin panelet"
msgid "Enter date"
msgstr "Angiv dato"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Angiv dato"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Bemærkninger"
@@ -127,42 +127,42 @@ msgstr "Det angivne e-mail domæne er ikke godkendt."
msgid "Registration is disabled."
msgstr "Registrering er deaktiveret."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Ugyldigt antal angivet"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Serienummer streng er tom"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Duplikeret serienummer"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr ""
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr "Ugyldig gruppesekvens: {group}"
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Ingen serienumre fundet"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Fjern HTML-tags fra denne værdi"
@@ -386,7 +386,7 @@ msgstr "Manglende fil"
msgid "Missing external link"
msgstr "Manglende eksternt link"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Vedhæftning"
msgid "Select file to attach"
msgstr "Vælg fil, der skal vedhæftes"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Kommentar"
msgid "File comment"
msgstr "Fil kommentar"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Bruger"
@@ -474,9 +474,9 @@ msgstr ""
msgid "Invalid choice"
msgstr "Ugyldigt valg"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Ugyldigt valg"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Navn"
@@ -500,8 +500,8 @@ msgstr "Navn"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Navn"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Navn"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Beskrivelse"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "overordnet"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Sti"
@@ -576,104 +576,104 @@ msgstr "Serverfejl"
msgid "An error has been logged by the server."
msgstr "En fejl blev logget af serveren."
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Skal være et gyldigt tal"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Valuta"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr "Vælg valuta fra tilgængelige muligheder"
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr "Du har ikke tilladelse til at ændre denne brugerrolle."
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr "Kun superbrugere kan oprette nye brugere"
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Filnavn"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Ugyldig værdi"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "Datafil"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Vælg datafilen til upload"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Filtype ikke understøttet"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "Filen er for stor"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "Ingen kolonner fundet i fil"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "Ingen datarækker fundet i fil"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Ingen data-rækker angivet"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Ingen data-kolonner angivet"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Mangler påkrævet kolonne: '{name}'"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Duplikeret kolonne: '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr "Eksternt billede"
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "URL til ekstern billedfil"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "Download af billeder fra ekstern URL er ikke aktiveret"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Kontrol af baggrundstjeneste mislykkedes"
@@ -813,7 +813,7 @@ msgstr "Opdel fra overordnet element"
msgid "Split child item"
msgstr "Opdel underordnet element"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Flettede lagervarer"
@@ -833,7 +833,7 @@ msgstr "Byggeorder output fuldført"
msgid "Build order output rejected"
msgstr ""
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr "Brugt efter byggeordre"
@@ -933,14 +933,14 @@ msgstr "Om InvenTree"
msgid "Build must be cancelled before it can be deleted"
msgstr "Produktion skal anulleres, før den kan slettes"
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr "Forbrugsvare"
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr "Allokeret"
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr "Tilgængelig"
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Produktionsordre"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "Produktionsordre reference"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "Produktionsordre som er tildelt denne produktion"
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "Produktionsordre som er tildelt denne produktion"
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "Produktionsordre som er tildelt denne produktion"
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Del"
@@ -1099,7 +1099,7 @@ msgstr "Salgsordrereference"
msgid "SalesOrder to which this build is allocated"
msgstr "Salgsordre, som er tildelt denne produktion"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "Produktions Status"
msgid "Build status code"
msgstr "Produktions statuskode"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "Batch Kode"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "Batch kode til dette produktions output"
@@ -1258,27 +1258,32 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr ""
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr ""
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr ""
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr ""
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr ""
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr ""
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr ""
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr ""
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr ""
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr ""
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr ""
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr ""
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr "Ikke tilladt"
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr "Accepter som forbrugt af denne byggeordre"
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr "Accepter Ikke tildelt"
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr "Accepter at lagervarer ikke er fuldt tildelt til denne byggeordre"
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr "Accepter ufuldført"
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr "Bygge linje"
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr ""
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr ""
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr ""
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr ""
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr ""
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr ""
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr ""
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr ""
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr ""
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr ""
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr ""
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
@@ -3953,7 +3967,7 @@ msgstr ""
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr ""
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr ""
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr ""
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr ""
msgid "Select supplier"
msgstr ""
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr ""
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr ""
@@ -4199,13 +4213,13 @@ msgstr ""
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr ""
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr ""
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr ""
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr ""
@@ -4809,7 +4823,7 @@ msgstr ""
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr ""
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr ""
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr ""
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr ""
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr ""
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -5919,7 +5937,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr ""
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr ""
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr ""
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr ""
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -7448,7 +7482,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr ""
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr ""
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr ""
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po
index 251914bc065b..c45baf1fb4b9 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:42\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@@ -51,18 +51,18 @@ msgstr "Fehlerdetails finden Sie im Admin-Panel"
msgid "Enter date"
msgstr "Datum eingeben"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Datum eingeben"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Notizen"
@@ -127,42 +127,42 @@ msgstr "Die angegebene E-Mail-Domain ist nicht freigegeben."
msgid "Registration is disabled."
msgstr "Registrierung ist deaktiviert."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Keine gültige Menge"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Keine Seriennummer angegeben"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Duplizierter Seriennummer"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr "Ungültiger Gruppenbereich: {group}"
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Gruppenbereich {group} überschreitet die zulässige Menge ({expected_quantity})"
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr "Ungültige Gruppensequenz: {group}"
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Keine Seriennummern gefunden"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Anzahl der eindeutigen Seriennummern ({len(serials)}) muss mit der Menge übereinstimmen ({expected_quantity})"
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Entferne HTML-Tags von diesem Wert"
@@ -292,7 +292,7 @@ msgstr "Russisch"
#: InvenTree/locales.py:39
msgid "Slovak"
-msgstr ""
+msgstr "Slowakisch"
#: InvenTree/locales.py:40
msgid "Slovenian"
@@ -340,7 +340,7 @@ msgstr "Email"
#: InvenTree/models.py:107
msgid "Error running plugin validation"
-msgstr ""
+msgstr "Fehler beim Ausführen der Plugin Validierung"
#: InvenTree/models.py:162
msgid "Metadata must be a python dict object"
@@ -386,7 +386,7 @@ msgstr "Fehlende Datei"
msgid "Missing external link"
msgstr "Fehlender externer Link"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Anhang"
msgid "Select file to attach"
msgstr "Datei zum Anhängen auswählen"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Kommentar"
msgid "File comment"
msgstr "Datei-Kommentar"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Benutzer"
@@ -474,9 +474,9 @@ msgstr "Doppelte Namen können nicht unter dem selben Elternteil existieren"
msgid "Invalid choice"
msgstr "Ungültige Auswahl"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Ungültige Auswahl"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Name"
@@ -500,8 +500,8 @@ msgstr "Name"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Name"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Name"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Beschreibung"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "Eltern"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Pfad"
@@ -576,104 +576,104 @@ msgstr "Serverfehler"
msgid "An error has been logged by the server."
msgstr "Ein Fehler wurde vom Server protokolliert."
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Muss eine gültige Nummer sein"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Währung"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr "Währung aus verfügbaren Optionen auswählen"
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr "Sie haben keine Berechtigung, diese Benutzerrolle zu ändern."
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr "Nur Superuser können neue Benutzer erstellen"
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr "Ihr Konto wurde erstellt."
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
-msgstr ""
+msgstr "Bitte benutzen Sie die Passwort-zurücksetzen-Funktion, um sich anzumelden"
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
-msgstr ""
+msgstr "Willkommen bei InvenTree"
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Dateiname"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Ungültiger Wert"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "Datendatei"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Neue Datei zum Hochladen auswählen"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Nicht unterstütztes Dateiformat"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "Datei ist zu groß"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "Keine Spalten in der Datei gefunden"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "Keine Datensätze in der Datei gefunden"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Keine Zeilen ausgewählt"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Keine Spalten angegeben"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Erforderliche Spalte '{name}' fehlt"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Doppelte Spalte: '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr "Grafiken aus externen Quellen"
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "URL der Remote-Bilddatei"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "Das Herunterladen von Bildern von Remote-URLs ist nicht aktiviert"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Hintergrund-Prozess-Kontrolle fehlgeschlagen"
@@ -813,7 +813,7 @@ msgstr "Vom übergeordneten Element geteilt"
msgid "Split child item"
msgstr "Unterobjekt geteilt"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Lagerartikel zusammengeführt"
@@ -833,7 +833,7 @@ msgstr "Endprodukt fertiggestellt"
msgid "Build order output rejected"
msgstr "Endprodukt abgelehnt"
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr "Durch Bauauftrag verbraucht"
@@ -933,14 +933,14 @@ msgstr "Über InvenTree"
msgid "Build must be cancelled before it can be deleted"
msgstr "Bauauftrag muss abgebrochen werden, bevor er gelöscht werden kann"
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr "Verbrauchsmaterial"
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr "Zugeordnet"
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr "Verfügbar"
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Bauauftrag"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "Bauauftragsreferenz"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Teil"
@@ -1099,7 +1099,7 @@ msgstr "Auftrag Referenz"
msgid "SalesOrder to which this build is allocated"
msgstr "Bestellung, die diesem Bauauftrag zugewiesen ist"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "Bauauftrags-Status"
msgid "Build status code"
msgstr "Bau-Statuscode"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "Losnummer"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "Losnummer für dieses Endprodukt"
@@ -1258,27 +1258,32 @@ msgstr "Endprodukt bereits hergstellt"
msgid "Build output does not match Build Order"
msgstr "Endprodukt stimmt nicht mit dem Bauauftrag überein"
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr "Anzahl muss größer Null sein"
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr "Menge kann nicht größer als die Ausgangsmenge sein"
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr "Objekt bauen"
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr "Objekt bauen"
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr "Objekt bauen"
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr "Objekt bauen"
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "Anzahl"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr "Erforderliche Menge für Auftrag"
-#: build/models.py:1373
+#: build/models.py:1378
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:1382
+#: build/models.py:1387
#, 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:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr "BestandObjekt ist zu oft zugewiesen"
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr "Reserviermenge muss größer null sein"
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein"
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr "Ausgewählter Lagerbestand stimmt nicht mit BOM-Linie überein"
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr "Ausgewählter Lagerbestand stimmt nicht mit BOM-Linie überein"
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "Lagerartikel"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr "Quell-Lagerartikel"
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr "Anzahl an Lagerartikel dem Bauauftrag zuweisen"
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr "Installiere in"
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr "Ziel-Lagerartikel"
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr "Endprodukt"
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr "Endprodukt stimmt nicht mit übergeordnetem Bauauftrag überein"
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr "Endprodukt entspricht nicht dem Teil des Bauauftrags"
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr "Dieses Endprodukt wurde bereits fertiggestellt"
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr "Dieses Endprodukt ist nicht vollständig zugewiesen"
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr "Menge der Endprodukte angeben"
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr "Ganzzahl für verfolgbare Teile erforderlich"
-#: build/serializers.py:271
+#: build/serializers.py:272
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:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "Seriennummer"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr "Seriennummer für dieses Endprodukt eingeben"
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr "Seriennummern automatisch zuweisen"
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Benötigte Lagerartikel automatisch mit passenden Seriennummern zuweisen"
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr "Die folgenden Seriennummern existieren bereits oder sind ungültig"
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr "Eine Liste von Endprodukten muss angegeben werden"
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr "Eine Liste von Endprodukten muss angegeben werden"
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr "Lagerort"
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr "Lagerort für ausgemusterte Ausgänge"
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr "Zuteilungen verwerfen"
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr "Bestandszuteilung für ausgemusterte Endprodukte verwerfen"
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr "Grund für das Verwerfen des Bauauftrages/der Bauaufträge"
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr "Lagerort für fertige Endprodukte"
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "Status"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr "Unvollständige Zuweisung akzeptieren"
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr "Endprodukte fertigstellen, auch wenn Bestand nicht fertig zugewiesen wurde"
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr "Zugewiesenen Bestand entfernen"
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr "Abzug aller Lagerbestände, die diesem Build bereits zugewiesen wurden"
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr "Unfertige Endprodukte entfernen"
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr "Lösche alle noch nicht abgeschlossenen Endprodukte"
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr "Nicht erlaubt"
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr "Als von diesem Bauauftrag verbraucht setzen"
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr "Bestandszuordnung vor dem Abschluss dieses Bauauftrags freigeben"
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr "Überbelegter Lagerbestand"
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr "Wie sollen zusätzliche Lagerbestandteile, die dem Bauauftrag zugewiesen wurden, behandelt werden"
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr "Der Bestand einiger Lagerartikel ist überbelegt"
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr "Nicht zugewiesene akzeptieren"
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr "Akzeptieren, dass Lagerartikel diesem Bauauftrag nicht vollständig zugewiesen wurden"
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr "Benötigter Bestand wurde nicht vollständig zugewiesen"
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr "Unvollständig Zuweisung akzeptieren"
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr "Akzeptieren, dass die erforderliche Anzahl der Bauaufträge nicht abgeschlossen ist"
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr "Benötigte Teil-Anzahl wurde noch nicht fertiggestellt"
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr "Bauauftrag hat unvollständige Aufbauten"
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr "Bauauftragsposition"
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr "Endprodukt"
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr "Endprodukt muss auf den gleichen Bauauftrag verweisen"
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr "Bauauftragspositionsartikel"
-#: build/serializers.py:790
+#: build/serializers.py:802
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:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr "Teil muss auf Lager sein"
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Verfügbare Menge ({q}) überschritten"
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr "Für Zuweisung von verfolgten Teilen muss ein Endprodukt angegeben sein"
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr "Endprodukt kann bei Zuweisung nicht-verfolgter Teile nicht angegeben werden"
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr "Zuweisungen müssen angegeben werden"
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Lagerort, von dem Teile bezogen werden sollen (leer lassen, um sie von jedem Lagerort zu nehmen)"
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr "Lagerort ausschließen"
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr "Lagerartikel vom ausgewählten Ort ausschließen"
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr "Wechselbares Lagerbestand"
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Lagerartikel an mehreren Standorten können austauschbar verwendet werden"
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr "Ersatzbestand"
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr "Zuordnung von Ersatzteilen erlauben"
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr "Optionale Positionen"
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr "Optionale Stücklisten-Positionen dem Bauauftrag hinzufügen"
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr "Stücklisten-Position"
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
-msgstr ""
+msgstr "Zugewiesener Bestand"
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr "Bestellt"
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
-msgstr ""
+msgstr "In Produktion"
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr "Fertiggestellte Endprodukte"
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr "Auftrag"
@@ -1870,15 +1875,15 @@ msgstr "Priorität"
#: build/templates/build/build_base.html:273
msgid "Delete Build Order"
-msgstr ""
+msgstr "Bauauftrag löschen"
#: build/templates/build/build_base.html:283
msgid "Build Order QR Code"
-msgstr ""
+msgstr "Bauftrags-QR-Code"
#: build/templates/build/build_base.html:295
msgid "Link Barcode to Build Order"
-msgstr ""
+msgstr "Barcode mit Bauauftrag verknüpfen"
#: build/templates/build/detail.html:15
msgid "Build Details"
@@ -1908,10 +1913,10 @@ msgstr "Zugewiesene Teile"
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2022,11 +2027,11 @@ msgstr "Bauauftrags-Notizen"
#: build/templates/build/detail.html:426
msgid "Allocation Complete"
-msgstr ""
+msgstr "Zuordnung abgeschlossen"
#: build/templates/build/detail.html:427
msgid "All lines have been fully allocated"
-msgstr ""
+msgstr "Alle Zeilen wurden vollständig zugewiesen"
#: build/templates/build/index.html:18 part/templates/part/detail.html:319
msgid "New Build Order"
@@ -2088,7 +2093,7 @@ msgstr "Zeitstempel der letzten Aktualisierung"
#: common/models.py:105
msgid "Site URL is locked by configuration"
-msgstr ""
+msgstr "Seiten-URL ist durch die Konfiguration gesperrt"
#: common/models.py:130
msgid "Unique project code"
@@ -2143,1340 +2148,1349 @@ msgstr "Ungültiger Domainname: {domain}"
msgid "No plugin"
msgstr "Kein Plugin"
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr "Neustart erforderlich"
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr "Eine Einstellung wurde geändert, die einen Neustart des Servers erfordert"
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr "Ausstehende Migrationen"
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr "Anzahl der ausstehenden Datenbankmigrationen"
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr "Name der Serverinstanz"
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr "Kurze Beschreibung der Instanz"
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr "Name der Instanz verwenden"
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr "Den Namen der Instanz in der Titelleiste verwenden"
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr "Anzeige von `Über` einschränken"
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr "Zeige das `Über` Fenster nur Administratoren"
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr "Firmenname"
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr "interner Firmenname"
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr "Basis-URL"
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr "Basis-URL für dieses Instanz"
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr "Standardwährung"
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr "Wählen Sie die Basiswährung für Preisberechnungen aus"
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr "Währungsaktualisierungsintervall"
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr "Wie oft Wechselkurse aktualisiert werden sollen (auf Null zum Deaktivieren setzen)"
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr "Tage"
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr "Währungs-Aktualisierungs-Plugin"
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr "Zu verwendendes Währungs-Aktualisierungs-Plugin"
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr "Von URL herunterladen"
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr "Herunterladen von externen Bildern und Dateien von URLs erlaubt"
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr "Download-Größenlimit"
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr "Maximal zulässige Größe für heruntergeladene Bilder"
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr "Benutzer-Agent zum Herunterladen von Daten"
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr "Überschreiben des Benutzer-Agenten, der verwendet wird, um Bilder und Dateien von externer Servern herunterzuladen (leer für die Standardeinstellung)"
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr "Strenge URL-Prüfung"
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr "Erfordert die Schema-Spezifikation bei der Validierung von URLs"
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr "Bestätigung verpflichtend"
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr "Eine ausdrückliche Benutzerbestätigung für bestimmte Aktionen erfordern."
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr "Baumtiefe"
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr "Standard Ebene für Baumansicht. Tiefere Ebenen können bei Bedarf nachgeladen werden."
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr "Prüfungsintervall aktualisieren"
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr "Wie oft soll nach Updates gesucht werden? (auf 0 setzen zum Deaktivieren)"
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr "Automatische Sicherung"
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr "Automatische Sicherung der Datenbank- und Mediendateien aktivieren"
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr "Intervall für automatische Sicherung"
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr "Anzahl der Tage zwischen automatischen Sicherungen"
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr "Aufgabenlöschinterval"
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr "Ergebnisse der Hintergrundaufgabe werden nach der angegebenen Anzahl von Tagen gelöscht"
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr "Löschintervall für Fehlerprotokolle"
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr "Fehlerprotokolle werden nach der angegebenen Anzahl von Tagen gelöscht"
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr "Löschintervall für Benachrichtigungen"
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr "Benutzerbenachrichtigungen werden nach der angegebenen Anzahl von Tagen gelöscht"
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Bacode-Feature verwenden"
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr "Barcode-Scanner Unterstützung im Webinterface aktivieren"
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr "Barcode-Eingabeverzögerung"
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr "Verzögerungszeit bei Barcode-Eingabe"
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr "Barcode Webcam-Unterstützung"
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr "Barcode-Scannen über Webcam im Browser erlauben"
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr "Artikelrevisionen"
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr "Revisions-Feld für Artikel aktivieren"
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr "IPN Regex"
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr "RegEx Muster für die Zuordnung von Teil-IPN"
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr "Mehrere Artikel mit gleicher IPN erlaubt"
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr "Mehrere Artikel mit gleicher IPN erlaubt"
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr "Ändern von IPN erlaubt"
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr "Ändern der IPN während des Bearbeiten eines Teils erlaubt"
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr "Teil-Stückliste kopieren"
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr "Stückliste von Teil kopieren wenn das Teil dupliziert wird "
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr "Teil-Parameter kopieren"
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr "Parameter-Daten für dieses Teil kopieren wenn das Teil dupliziert wird"
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr "Teil-Testdaten kopieren"
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr "Test-Daten für dieses Teil kopieren wenn das Teil dupliziert wird"
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr "Kategorie-Parametervorlage kopieren"
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr "Kategorie-Parameter Vorlagen kopieren wenn ein Teil angelegt wird"
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr "Vorlage"
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr "Teile sind standardmäßig Vorlagen"
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr "Baugruppe"
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr "Teile können standardmäßig aus anderen Teilen angefertigt werden"
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr "Komponente"
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr "Teile können standardmäßig in Baugruppen benutzt werden"
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr "Kaufbar"
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr "Artikel sind grundsätzlich kaufbar"
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr "Verkäuflich"
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr "Artikel sind grundsätzlich verkaufbar"
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr "Nachverfolgbar"
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr "Artikel sind grundsätzlich verfolgbar"
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr "Virtuell"
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr "Teile sind grundsätzlich virtuell"
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr "Import in Ansichten anzeigen"
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr "Importassistent in einigen Teil-Ansichten anzeigen"
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr "Verwandte Teile anzeigen"
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr "Verwandte Teile eines Teils anzeigen"
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr "Initialer Lagerbestand"
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr "Erstellen von Lagerbestand beim Hinzufügen eines neuen Teils erlauben"
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr "Initiale Lieferantendaten"
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr "Erstellen von Lieferantendaten beim Hinzufügen eines neuen Teils erlauben"
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr "Anzeigeformat für Teilenamen"
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr "Format für den Namen eines Teiles"
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr "Standardsymbol der Teilkategorie"
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr "Standardsymbol der Teilkategorie (leer bedeutet kein Symbol)"
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr "Parameter Einheiten durchsetzen"
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr "Wenn Einheiten angegeben werden, müssen die Parameterwerte mit den angegebenen Einheiten übereinstimmen"
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr "Dezimalstellen für minimalen Preis"
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr "Mindestanzahl der Dezimalstellen bei der Darstellung der Preisdaten"
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr "Dezimalstellen für maximalen Preis"
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr "Maximale Anzahl der Dezimalstellen bei der Darstellung der Preisdaten"
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr "Zulieferer-Preise verwenden"
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr "Lieferanten-Staffelpreise in die Gesamt-Preisberechnungen einbeziehen"
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr "Kaufverlauf überschreiben"
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr "Historische Bestellungspreise überschreiben die Lieferanten-Staffelpreise"
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr "Lagerartikel-Preis verwenden"
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr "Preise aus manuell eingegebenen Lagerdaten für Preisberechnungen verwenden"
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr "Lagerartikelpreis Alter"
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr "Lagerartikel, die älter als diese Anzahl an Tagen sind, von der Preisberechnung ausschließen"
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr "Variantenpreise verwenden"
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr "Variantenpreise in die Gesamt-Preisberechnungen einbeziehen"
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr "Nur aktive Varianten"
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr "Nur aktive Variantenteile zur Berechnung der Variantenbepreisung verwenden"
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr "Intervall für Neuberechnung von Preisen"
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr "Anzahl der Tage bis die Teile-Preisberechnungen automatisch aktualisiert werden"
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr "Interne Preise"
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr "Interne Preise für Teile aktivieren"
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr "Interne Preisüberschreibung"
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr "Falls verfügbar, überschreiben interne Preise Preispannenberechnungen"
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr "Labeldruck aktivieren"
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr "Labeldruck über die Website aktivieren"
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr "Label Bild DPI"
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr "DPI-Auflösung bei der Erstellung von Bilddateien für Etikettendruck-Plugins"
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr "Berichte aktivieren"
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr "Berichterstellung aktivieren"
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr "Entwickler-Modus"
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr "Berichte im Entwickler-Modus generieren (als HTML)"
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr "Seitengröße"
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr "Standardseitenformat für PDF-Bericht"
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr "Testberichte aktivieren"
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr "Erstellung von Test-Berichten aktivieren"
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr "Testberichte anhängen"
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr "Beim Drucken eines Testberichts dem zugehörigen Lagerbestand eine Kopie des Testberichts beifügen"
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr "Global einzigartige Seriennummern"
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr "Seriennummern für Lagerartikel müssen global eindeutig sein"
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr "Seriennummern automatisch ausfüllen"
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr "Seriennummern in Formularen automatisch ausfüllen"
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr "Erschöpften Lagerartikel löschen"
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr "Legt das Standardverhalten fest, wenn ein Lagerartikel erschöpft ist"
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr "Losnummer Vorlage"
-#: common/models.py:1678
+#: common/models.py:1690
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:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr "Bestands-Ablauf"
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr "Ablaufen von Bestand ermöglichen"
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr "Abgelaufenen Bestand verkaufen"
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr "Verkauf von abgelaufenem Bestand erlaubt"
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr "Bestands-Stehzeit"
-#: common/models.py:1697
+#: common/models.py:1709
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:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr "Abgelaufenen Bestand verbauen"
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr "Verbauen von abgelaufenen Bestand erlaubt"
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr "Bestands-Eigentümerkontrolle"
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr "Eigentümerkontrolle für Lagerorte und Teile aktivieren"
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr "Standardsymbol für Lagerort"
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr "Standardsymbol für Lagerstandort (leer bedeutet kein Symbol)"
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr "Zeige installierte Lagerartikel"
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr "Anzeige der installierten Lagerartikel in Bestandstabellen"
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr "Bauauftragsreferenz-Muster"
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr "Benötigtes Muster für die Generierung des Referenzfeldes für Bauaufträge"
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr "Rücksendungen aktivieren"
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr "Aktivieren der Rücksendung-Funktion in der Benutzeroberfläche"
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr "Referenz Muster für Rücksendungen"
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr "Benötigtes Muster für die Generierung des Referenzfeldes für Rücksendungen"
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr "Abgeschlossene Rücksendungen bearbeiten"
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr "Bearbeitung von Rücksendungen nach Abschluss erlauben"
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr "Auftragsreferenz-Muster"
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr "Benötigtes Muster für die Generierung des Referenzfeldes für Aufträge"
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr "Auftrag Standardsendung"
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr "Erstelle eine Standardsendung für Aufträge"
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr "Abgeschlossene Verkaufsaufträge bearbeiten"
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr "Bearbeitung von Verkaufsaufträgen nach Versand oder Abschluss erlauben"
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr "Bestellungsreferenz-Muster"
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr "Benötigtes Muster für die Generierung des Referenzfeldes für Bestellungen"
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr "Abgeschlossene Einkaufsaufträge bearbeiten"
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr "Bearbeitung von Einkaufsaufträgen nach Versand oder Abschluss erlauben"
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr "Bestellungen automatisch abschließen"
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr "Bestellung automatisch als abgeschlossen markieren, wenn der Empfang aller Artikel bestätigt wurde"
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr "Passwort vergessen aktivieren"
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr "Passwort-vergessen-Funktion auf den Anmeldeseiten aktivieren"
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr "Registrierung erlauben"
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr "Selbstregistrierung für Benutzer auf den Anmeldeseiten aktivieren"
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr "SSO aktivieren"
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr "SSO auf den Anmeldeseiten aktivieren"
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr "SSO Selbstregistrierung aktivieren"
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr "Selbstregistrierung über SSO für Benutzer auf den Anmeldeseiten aktivieren"
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr "Email-Adresse erforderlich"
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr "Benutzer müssen bei der Registrierung eine E-Mail angeben"
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr "SSO-Benutzer automatisch ausfüllen"
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Benutzer-Details automatisch aus SSO-Konto ausfüllen"
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr "E-Mail zweimal"
-#: common/models.py:1845
+#: common/models.py:1857
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:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr "Passwort zweimal"
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr "Bei der Registrierung den Benutzer zweimal nach dem Passwort fragen"
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr "Erlaubte Domains"
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr "Anmeldung auf bestimmte Domänen beschränken (kommagetrennt, beginnend mit @)"
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr "Gruppe bei Registrierung"
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr "Gruppe der neue Benutzer bei der Registrierung zugewiesen werden"
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr "MFA erzwingen"
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr "Benutzer müssen Multifaktor-Authentifizierung verwenden."
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr "Plugins beim Start prüfen"
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr "Beim Start überprüfen, ob alle Plugins installiert sind - Für Container aktivieren"
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
-msgstr ""
+msgstr "Nach Plugin-Aktualisierungen suchen"
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
-msgstr ""
+msgstr "Periodische Überprüfungen auf Updates für installierte Plugins aktivieren"
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr "URL-Integration aktivieren"
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr "Plugins zum Hinzufügen von URLs aktivieren"
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr "Navigations-Integration aktivieren"
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr "Plugins zur Integration in die Navigation aktivieren"
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr "App-Integration aktivieren"
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr "Plugins zum Hinzufügen von Apps aktivieren"
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr "Terminplan-Integration aktivieren"
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr "Geplante Aufgaben aktivieren"
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr "Ereignis-Integration aktivieren"
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr "Plugins ermöglichen auf interne Ereignisse zu reagieren"
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr "Projektcodes aktivieren"
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr "Aktiviere Projektcodes für die Verfolgung von Projekten"
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr "Inventurfunktionen"
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr "Inventur-Funktionen zur Aufzeichnung von Lagerbeständen und zur Berechnung des Lagerwerts aktivieren"
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr "Externe Standorte ausschließen"
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr "Lagerartikeln in externen Standorten in der Berechnungen zur Bestandsaufnahme ausschließen"
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr "Automatische Inventur-Periode"
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr "Anzahl der Tage zwischen automatischen Bestandsaufnahmen (zum Deaktivieren auf Null setzen)"
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr "Löschintervall für Berichte"
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr "Inventurberichte werden nach der angegebenen Anzahl von Tagen gelöscht"
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr "Vollständige Namen von Benutzern anzeigen"
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr "Vollständigen Namen von Benutzern anstatt Benutzername anzeigen"
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)"
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr "Inaktive Teile ausblenden"
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr "Ausblenden inaktiver Teile in den auf der Startseite angezeigten Ergebnissen"
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr "Abonnierte Teile anzeigen"
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr "Zeige abonnierte Teile auf der Startseite"
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr "Abonnierte Kategorien anzeigen"
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr "Zeige abonnierte Teilkategorien auf der Startseite"
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr "Neueste Teile anzeigen"
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr "Zeige neueste Teile auf der Startseite"
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr "Nicht validierte Stücklisten anzeigen"
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr "Zeige Stücklisten, die noch nicht validiert sind, auf der Startseite"
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr "Neueste Bestandänderungen anzeigen"
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr "Zeige zuletzt geänderte Lagerbestände auf der Startseite"
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr "Niedrigen Bestand anzeigen"
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr "Zeige geringen Bestand auf der Startseite"
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr "Lerren Bestand anzeigen"
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr "Zeige aufgebrauchte Lagerartikel auf der Startseite"
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr "Benötigten Bestand anzeigen"
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr "Zeige Bestand für Bauaufträge auf der Startseite"
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr "Abgelaufenen Bestand anzeigen"
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr "Zeige abgelaufene Lagerbestände auf der Startseite"
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr "Alten Bestand anzeigen"
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr "Zeige überfällige Lagerartikel auf der Startseite"
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr "Ausstehende Bauaufträge anzeigen"
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr "Zeige ausstehende Bauaufträge auf der Startseite"
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr "Zeige überfällige Bauaufträge"
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr "Zeige überfällige Bauaufträge auf der Startseite"
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr "Ausstehende POs anzeigen"
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr "Zeige ausstehende POs auf der Startseite"
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr "Überfällige POs anzeigen"
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr "Zeige überfällige POs auf der Startseite"
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr "Ausstehende SOs anzeigen"
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr "Zeige ausstehende SOs auf der Startseite"
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr "Überfällige SOs anzeigen"
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr "Zeige überfällige SOs auf der Startseite"
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr "Ausstehende Versandaufträge anzeigen"
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr "Ausstehende Versandaufträge auf der Startseite anzeigen"
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr "Zeige Neuigkeiten"
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr "Neuigkeiten auf der Startseite anzeigen"
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr "Label inline anzeigen"
-#: common/models.py:2139
+#: common/models.py:2159
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:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr "Standard-Etikettendrucker"
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr "Einen standardmäßig ausgewählten Etikettendrucker konfigurieren"
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr "Berichte inline anzeigen"
-#: common/models.py:2155
+#: common/models.py:2175
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:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr "Teile suchen"
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr "Teile in der Suchvorschau anzeigen"
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr "Zulieferteile durchsuchen"
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr "Zuliefererteile in der Suchvorschau anzeigen"
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr "Herstellerteile durchsuchen"
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr "Herstellerteile in der Suchvorschau anzeigen"
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr "Inaktive Teile ausblenden"
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr "Inaktive Teile in der Suchvorschau ausblenden"
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr "Kategorien durchsuchen"
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr "Teilekategorien in der Suchvorschau anzeigen"
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr "Bestand durchsuchen"
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr "Lagerartikel in Suchvorschau anzeigen"
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr "Nicht verfügbare Artikel ausblenden"
-#: common/models.py:2199
+#: common/models.py:2219
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:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr "Lagerorte durchsuchen"
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr "Lagerorte in Suchvorschau anzeigen"
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr "Firmen durchsuchen"
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr "Firmen in der Suchvorschau anzeigen"
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr "Bauaufträge durchsuchen"
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr "Bauaufträge in der Suchvorschau anzeigen"
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr "Bestellungen durchsuchen"
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr "Bestellungen in der Suchvorschau anzeigen"
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr "Inaktive Bestellungen ausblenden"
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr "Inaktive Bestellungen in der Suchvorschau ausblenden"
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr "Aufträge durchsuchen"
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr "Aufträge in der Suchvorschau anzeigen"
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr "Inaktive Aufträge ausblenden"
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr "Inaktive Aufträge in der Suchvorschau ausblenden"
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr "Suche nach Rücksendungen"
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr "Rücksendungen in der Suchvorschau anzeigen"
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr "Inaktive Rücksendungen ausblenden"
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr "Inaktive Rücksendungen in der Suchvorschau ausblenden"
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr "Anzahl Suchergebnisse"
-#: common/models.py:2267
+#: common/models.py:2287
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:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr "Regex Suche"
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr "Reguläre Ausdrücke in Suchabfragen aktivieren"
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr "Ganzes Wort suchen"
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr "Suchabfragen liefern Ergebnisse für ganze Wortkombinationen"
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr "zeige Bestand in Eingabemasken"
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr "Zeige den verfügbaren Bestand in einigen Eingabemasken"
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr "Esc-Taste schließt Formulare"
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr "Benutze die Esc-Taste, um Formulare zu schließen"
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr "Fixierter Navigationsleiste"
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr "Position der Navigationsleiste am oberen Bildschirmrand fixieren"
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr "Datumsformat"
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr "Bevorzugtes Format für die Anzeige von Daten"
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Teilzeitplanung"
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr "Zeige Zeitplanung für Teile"
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr "Inventur"
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr "Zeigt Inventur-Informationen an (falls die Inventurfunktion aktiviert ist)"
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr "Zeichenkettenlänge in Tabellen"
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr "Maximale Länge für Zeichenketten, die in Tabellenansichten angezeigt werden"
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr "Standardvorlage für Teilebeschriftung"
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr "Die Teil-Etikettenvorlage, die automatisch ausgewählt werden soll"
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr "Lagerartikel-Standardvorlage"
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr "Die Lagerartikel-Etikettenvorlage soll automatisch ausgewählt werden"
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr "Standardetikettenvorlage für Lagerstandort"
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr "Die Lagerstandort-Etikettenvorlage, die automatisch ausgewählt werden soll"
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr "Fehlerberichte empfangen"
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr "Benachrichtigungen bei Systemfehlern erhalten"
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
-msgstr ""
+msgstr "Zuletzt verwendete Druckmaschinen"
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
-msgstr ""
+msgstr "Die zuletzt benutzten Druckmaschinen für einen Benutzer speichern"
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr "Preisstaffelungs Anzahl"
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr "Preisstaffelungs Anzahl"
msgid "Price"
msgstr "Preis"
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr "Stückpreis für die angegebene Anzahl"
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr "Endpunkt"
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr "Endpunkt, an dem dieser Webhook empfangen wird"
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr "Name für diesen Webhook"
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr "Name für diesen Webhook"
msgid "Active"
msgstr "Aktiv"
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr "Ist dieser Webhook aktiv"
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr "Token"
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr "Token für Zugang"
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr "Geheimnis"
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr "Shared Secret für HMAC"
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr "Nachrichten-ID"
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr "Eindeutige Kennung für diese Nachricht"
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr "Host"
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr "Host von dem diese Nachricht empfangen wurde"
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr "Kopfzeile"
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr "Header dieser Nachricht"
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr "Body"
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr "Body dieser Nachricht"
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr "Endpunkt, über den diese Nachricht empfangen wurde"
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr "Bearbeitet"
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr "Wurde die Arbeit an dieser Nachricht abgeschlossen?"
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr "ID"
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr "Titel"
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr "Veröffentlicht"
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Autor"
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Zusammenfassung"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr "Gelesen"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr "Wurde diese Nachricht gelesen?"
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr "Wurde diese Nachricht gelesen?"
msgid "Image"
msgstr "Bild"
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr "Bilddatei"
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr "Einheitsname muss eine gültige Kennung sein"
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr "Einheitsname"
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr "Symbol"
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr "Optionales Einheitssymbol"
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr "Definition"
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr "Einheitsdefinition"
@@ -3849,7 +3863,7 @@ msgstr "Standard-Währung für diese Firma"
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr "Firma"
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr "Link zu Adressinformationen (extern)"
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Basisteil"
@@ -3953,7 +3967,7 @@ msgstr "Teil auswählen"
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr "Hersteller auswählen"
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr "Parametername"
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr "Wert"
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr "Parameterwert"
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren"
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr "Zulieferer"
msgid "Select supplier"
msgstr "Zulieferer auswählen"
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr "Lagerbestandseinheit (SKU) des Zulieferers"
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr "Zuliefererbeschreibung des Teils"
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr "Notiz"
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr "Mindestpreis"
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr "Verpackungen"
@@ -4199,13 +4213,13 @@ msgstr "Bild löschen"
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr "Kunde"
@@ -4228,11 +4242,11 @@ msgstr "Telefon"
#: company/templates/company/company_base.html:205
#: part/templates/part/part_base.html:528
msgid "Remove Image"
-msgstr ""
+msgstr "Bild entfernen"
#: company/templates/company/company_base.html:206
msgid "Remove associated image from this company"
-msgstr ""
+msgstr "Verknüpftes Bild von dieser Firma entfernen"
#: company/templates/company/company_base.html:208
#: part/templates/part/part_base.html:531
@@ -4244,12 +4258,12 @@ msgstr "Entfernen"
#: company/templates/company/company_base.html:237
#: part/templates/part/part_base.html:560
msgid "Upload Image"
-msgstr ""
+msgstr "Bild hochladen"
#: company/templates/company/company_base.html:252
#: part/templates/part/part_base.html:614
msgid "Download Image"
-msgstr ""
+msgstr "Bild herunterladen"
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
@@ -4432,7 +4446,7 @@ msgstr "Neuer Parameter"
#: company/templates/company/manufacturer_part.html:206
#: templates/js/translated/part.js:1422
msgid "Add Parameter"
-msgstr ""
+msgstr "Parameter hinzufügen"
#: company/templates/company/sidebar.html:6
msgid "Manufactured Parts"
@@ -4463,7 +4477,7 @@ msgstr "Adressen"
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr "Zuliefererteil"
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr "Keine Lieferanteninformationen verfügbar"
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4548,25 +4562,25 @@ msgstr "Preisstaffel hinzufügen"
#: company/templates/company/supplier_part.html:276
msgid "Supplier Part QR Code"
-msgstr ""
+msgstr "Zulieferteil QR-Code"
#: company/templates/company/supplier_part.html:287
msgid "Link Barcode to Supplier Part"
-msgstr ""
+msgstr "Barcode mit Zulieferteil verknüpfen"
#: company/templates/company/supplier_part.html:359
msgid "Update Part Availability"
-msgstr ""
+msgstr "Verfügbarkeit der Teile aktualisieren"
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr "Lagerartikel"
@@ -4602,7 +4616,7 @@ msgstr "Neue Firma"
#: label/api.py:247
msgid "Error printing label"
-msgstr ""
+msgstr "Fehler beim Drucken des Labels"
#: label/models.py:115
msgid "Label name"
@@ -4676,106 +4690,106 @@ msgstr "QR-Code"
msgid "QR code"
msgstr "QR-Code"
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
-msgstr ""
+msgstr "Kopien"
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
-msgstr ""
+msgstr "Anzahl der zu druckenden Kopien für jedes Label"
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
-msgstr ""
+msgstr "Verbunden"
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr "Unbekannt"
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
-msgstr ""
+msgstr "Drucken"
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
-msgstr ""
+msgstr "Keine Medien"
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
-msgstr ""
+msgstr "Verbindung getrennt"
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
-msgstr ""
+msgstr "Etikettendrucker"
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
-msgstr ""
+msgstr "Drucken Sie Etiketten direkt für verschiedene Artikel."
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
-msgstr ""
+msgstr "Druckerstandort"
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
-msgstr ""
+msgstr "Den Drucker an einen bestimmten Ort aufstellen"
#: machine/models.py:25
msgid "Name of machine"
-msgstr ""
+msgstr "Name des Geräts"
#: machine/models.py:29
msgid "Machine Type"
-msgstr ""
+msgstr "Gerätetyp"
#: machine/models.py:29
msgid "Type of machine"
-msgstr ""
+msgstr "Typ der Maschine"
#: machine/models.py:34 machine/models.py:146
msgid "Driver"
-msgstr ""
+msgstr "Treiber"
#: machine/models.py:35
msgid "Driver used for the machine"
-msgstr ""
+msgstr "Verwendeter Treiber für die Maschine"
#: machine/models.py:39
msgid "Machines can be disabled"
-msgstr ""
+msgstr "Maschinen können deaktiviert werden"
#: machine/models.py:95
msgid "Driver available"
-msgstr ""
+msgstr "Treiber verfügbar"
#: machine/models.py:100
msgid "No errors"
-msgstr ""
+msgstr "Keine Fehler"
#: machine/models.py:105
msgid "Initialized"
-msgstr ""
+msgstr "Initialisiert"
#: machine/models.py:110
msgid "Errors"
-msgstr ""
+msgstr "Fehler"
#: machine/models.py:117
msgid "Machine status"
-msgstr ""
+msgstr "Status der Maschine"
#: machine/models.py:145
msgid "Machine"
-msgstr ""
+msgstr "Maschine"
#: machine/models.py:151
msgid "Machine Config"
-msgstr ""
+msgstr "Maschinenkonfiguration"
#: machine/models.py:156
msgid "Config type"
-msgstr ""
+msgstr "Konfigurationstyp"
#: order/admin.py:30 order/models.py:88
#: report/templates/report/inventree_po_report_base.html:31
@@ -4800,7 +4814,7 @@ msgstr "Keine passende Bestellung gefunden"
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr "Bestellung"
@@ -4809,7 +4823,7 @@ msgstr "Bestellung"
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr "Rücksendeauftrag"
@@ -5008,9 +5022,9 @@ msgstr "Empfangen"
msgid "Number of items received"
msgstr "Empfangene Objekt-Anzahl"
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr "Preis"
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr "Benutzer, der diese Sendung kontrolliert hat"
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr "Sendung"
@@ -5451,7 +5465,7 @@ msgstr "Gesamtkosten konnten nicht berechnet werden"
#: order/templates/order/order_base.html:318
msgid "Purchase Order QR Code"
-msgstr ""
+msgstr "Bestellung QR-Code"
#: order/templates/order/order_base.html:330
msgid "Link Barcode to Purchase Order"
@@ -5726,12 +5740,12 @@ 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/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr "Teil-ID"
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr "Name des Teils"
@@ -5743,7 +5757,7 @@ msgstr "Beschreibung des Teils"
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr "IPN (Interne Produktnummer)"
@@ -5811,11 +5825,11 @@ msgstr "Minimale Kosten"
msgid "Maximum Cost"
msgstr "Maximale Kosten"
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr "Eltern ID"
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr "Name des übergeordneten Teils"
@@ -5824,7 +5838,7 @@ msgstr "Name des übergeordneten Teils"
msgid "Category Path"
msgstr "Pfad zur Kategorie"
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr "Pfad zur Kategorie"
msgid "Parts"
msgstr "Teile"
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr "Stücklistenebene"
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr "Stücklisten-Position ID"
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr "Übergeordnete IPN"
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr "Teil IPN"
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr "Niedrigster Preis"
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr "Höchster Preis"
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr "Eingehende Bestellung"
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr "Ausgehender Auftrag"
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr "Lagerartikel produziert von Bauauftrag"
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr "Lagerartikel für Bauauftrag benötigt"
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr "Gültig"
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr "Gesamte Stückliste validieren"
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr "Diese Option muss ausgewählt werden"
@@ -5904,7 +5922,7 @@ msgstr "Gesamtbestand"
msgid "Input quantity for price calculation"
msgstr "Menge für die Preisberechnung"
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Teil-Kategorie"
@@ -5919,7 +5937,7 @@ msgstr "Teil-Kategorien"
msgid "Default location for parts in this category"
msgstr "Standard-Lagerort für Teile dieser Kategorie"
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr "Teil mit diesem Namen, IPN und Revision existiert bereits."
msgid "Parts cannot be assigned to structural part categories!"
msgstr "Strukturellen Teilekategorien können keine Teile zugewiesen werden!"
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr "Name des Teils"
@@ -6009,9 +6027,9 @@ msgstr "Artikelbeschreibung (optional)"
msgid "Part keywords to improve visibility in search results"
msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern"
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr "Insgesamt verfügbarer Lagerbestand zum Zeitpunkt der Inventur"
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr "Datum"
@@ -6328,556 +6346,572 @@ msgstr "Anzahl der Teile, die von der Inventur abgedeckt werden"
msgid "User who requested this stocktake report"
msgstr "Benutzer, der diesen Inventurbericht angefordert hat"
-#: part/models.py:3418
+#: part/models.py:3424
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:3435
+#: part/models.py:3434
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:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr "Test-Name"
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr "Namen für diesen Test eingeben"
-#: part/models.py:3464
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
+msgstr ""
+
+#: part/models.py:3465
msgid "Test Description"
msgstr "Test-Beschreibung"
-#: part/models.py:3465
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr "Beschreibung für diesen Test eingeben"
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr "Benötigt"
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr "Muss dieser Test erfolgreich sein?"
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr "Erfordert Wert"
-#: part/models.py:3477
+#: part/models.py:3478
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:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr "Anhang muss eingegeben werden"
-#: part/models.py:3484
+#: part/models.py:3485
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:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr "Checkbox-Parameter können keine Einheiten haben"
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr "Checkbox-Parameter können keine Auswahl haben"
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr "Auswahl muss einzigartig sein"
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr "Vorlagen-Name des Parameters muss eindeutig sein"
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr "Name des Parameters"
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr "Physikalische Einheiten für diesen Parameter"
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr "Parameter-Beschreibung"
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr "Checkbox"
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr "Ist dieser Parameter eine Checkbox?"
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr "Auswahlmöglichkeiten"
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr "Gültige Optionen für diesen Parameter (durch Kommas getrennt)"
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr "Ungültige Auswahl für Parameterwert"
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr "Ausgangsteil"
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr "Parameter Vorlage"
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr "Wert"
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr "Parameter Wert"
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr "Standard-Wert"
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr "Standard Parameter Wert"
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr "Teilnummer oder Teilname"
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr "Eindeutige Teil-ID"
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr "IPN-Wert des Teils"
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr "Stufe"
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr "Stücklistenebene"
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr "Ausgangsteil auswählen"
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr "Untergeordnetes Teil"
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr "Teil für die Nutzung in der Stückliste auswählen"
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil"
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr "Diese Stücklisten-Position ist optional"
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr "Diese Stücklisten-Position ist ein Verbrauchsartikel (sie wird nicht in Bauaufträgen verfolgt)"
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Überschuss"
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "Geschätzter Ausschuss (absolut oder prozentual)"
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr "Referenz der Postion auf der Stückliste"
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr "Notizen zur Stücklisten-Position"
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr "Prüfsumme"
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr "Prüfsumme der Stückliste"
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr "überprüft"
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr "Diese Stücklistenposition wurde validiert"
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr "Wird vererbt"
-#: part/models.py:4036
+#: part/models.py:4037
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:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr "Varianten zulassen"
-#: part/models.py:4042
+#: part/models.py:4043
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:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr "Menge muss eine Ganzzahl sein"
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr "Zuliefererteil muss festgelegt sein"
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr "Stücklisten Ersatzteile"
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr "Ersatzteil kann nicht identisch mit dem Hauptteil sein"
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr "Übergeordnete Stücklisten Position"
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr "Ersatzteil"
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr "Teil 1"
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr "Teil 2"
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr "verknüpftes Teil auswählen"
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr "Teil-Beziehung kann nicht zwischen einem Teil und sich selbst erstellt werden"
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr "Doppelte Beziehung existiert bereits"
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr "Kaufwährung dieses Lagerartikels"
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr "Keine Teile ausgewählt"
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr "Kategorie auswählen"
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr "Originalteil"
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr "Originalteil zum Duplizieren auswählen"
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr "Bild kopieren"
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr "Bild vom Originalteil kopieren"
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr "Stückliste kopieren"
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr "Stückliste vom Originalteil kopieren"
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr "Parameter kopieren"
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr "Parameterdaten vom Originalteil kopieren"
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr "Anmerkungen kopieren"
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr "Notizen aus Originalteil kopieren"
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr "Start-Bestandsmenge"
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr "Initiale Lagermenge für dieses Teil. Wenn die Menge null ist, wird kein Lagerbestand hinzugefügt."
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr "Initialer Lagerort"
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr "Lagerstandort für dieses Teil angeben"
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr "Lieferant auswählen (oder leer lassen, um zu überspringen)"
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr "Hersteller auswählen (oder leer lassen, um zu überspringen)"
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr "Hersteller-Teilenummer"
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr "Ausgewählte Firma ist kein gültiger Lieferant"
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr "Ausgewählte Firma ist kein gültiger Hersteller"
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr "Herstellerteil mit dieser MPN existiert bereits"
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr "Lieferantenteil mit dieser SKU existiert bereits"
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr "Teil duplizieren"
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr "Initiale Daten von anderem Teil kopieren"
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr "Initialer Lagerbestand"
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr "Erstelle Teil mit Ausgangsbestand"
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr "Lieferanteninformationen"
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr "Lieferanteninformationen zu diesem Teil hinzufügen"
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr "Kategorieparameter kopieren"
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr "Parametervorlagen aus der ausgewählten Teilkategorie kopieren"
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr "Vorhandenes Bild"
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr "Dateiname eines vorhandenen Teilbildes"
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr "Bilddatei existiert nicht"
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr "Inventurbericht auf ein bestimmtes Teil und alle Variantenteile beschränken"
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr "Inventurbericht auf eine bestimmte Teilekategorie und alle untergeordneten Kategorien beschränken"
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr "Inventurbericht auf einen bestimmten Lagerort und alle untergeordneten Lagerorte beschränken"
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr "Externen Bestand ausschließen"
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr "Lagerartikel an externen Orten ausschließen"
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr "Bericht generieren"
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr "Erstelle Berichtsdatei mit berechneten Inventurdaten"
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr "Teile aktualisieren"
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr "Angegebene Teile mit berechneten Inventurdaten aktualisieren"
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr "Inventur-Funktionalität ist nicht aktiviert"
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr "Berechneten Wert für Mindestpreis überschreiben"
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr "Mindestpreis Währung"
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr "Berechneten Wert für maximalen Preis überschreiben"
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr "Maximalpreis Währung"
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr "Aktualisieren"
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr "Preis für dieses Teil aktualisieren"
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr "Konnte nicht von den angegebenen Währungen in {default_currency} umrechnen"
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr "Mindestpreis darf nicht größer als der Maximalpreis sein"
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr "Der Maximalpreis darf nicht kleiner als der Mindestpreis sein"
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr "Teil auswählen, von dem Stückliste kopiert wird"
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr "Bestehende Daten entfernen"
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr "Bestehende Stücklisten-Positionen vor dem Kopieren entfernen"
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr "Vererbtes einschließen"
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr "Stücklisten-Positionen einbeziehen, die von Vorlage-Teilen geerbt werden"
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr "Ungültige Zeilen überspringen"
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr "Aktiviere diese Option, um ungültige Zeilen zu überspringen"
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr "Ersatzteile kopieren"
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr "Ersatzteile beim Duplizieren von Stücklisten-Positionen kopieren"
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr "Bestehende Stückliste löschen"
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr "Bestehende Stücklisten-Positionen vor dem Importieren entfernen"
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr "Keine Teilspalte angegeben"
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr "Mehrere übereinstimmende Teile gefunden"
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr "Keine passenden Teile gefunden"
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr "Teil ist nicht als Komponente angelegt"
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr "Menge nicht angegeben"
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr "Ungültige Menge"
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr "Mindestens eine Stückliste-Position ist erforderlich"
@@ -7040,7 +7074,7 @@ msgstr "Inventurinformationen hinzufügen"
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr "Inventur"
@@ -7274,7 +7308,7 @@ msgstr "Teil ist nicht aktiv"
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr "Inaktiv"
@@ -7402,7 +7436,7 @@ msgstr "Varianten"
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr "Bestand"
@@ -7448,7 +7482,7 @@ msgstr "Bearbeiten"
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr "Zuletzt aktualisiert"
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -7862,15 +7896,15 @@ msgstr ""
#: plugin/builtin/labels/inventree_machine.py:62
msgid "Provides support for printing using a machine"
-msgstr ""
+msgstr "Unterstützt das Drucken mit einer Maschine"
#: plugin/builtin/labels/inventree_machine.py:150
msgid "last used"
-msgstr ""
+msgstr "Zuletzt benutzt"
#: plugin/builtin/labels/inventree_machine.py:167
msgid "Options"
-msgstr ""
+msgstr "Optionen"
#: plugin/builtin/labels/label_sheet.py:29
msgid "Page size for the label sheet"
@@ -7878,11 +7912,11 @@ msgstr "Seitengröße für das Labelblatt"
#: plugin/builtin/labels/label_sheet.py:34
msgid "Skip Labels"
-msgstr ""
+msgstr "Etiketten überspringen"
#: plugin/builtin/labels/label_sheet.py:35
msgid "Skip this number of labels when printing label sheets"
-msgstr ""
+msgstr "Diese Anzahl der Etiketten beim Drucken von Etiketten überspringen"
#: plugin/builtin/labels/label_sheet.py:41
msgid "Border"
@@ -8059,17 +8093,17 @@ msgstr "Methode"
msgid "No author found"
msgstr "Kein Autor gefunden"
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr "Summe"
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr "Testergebnisse"
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr "Test"
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr "Ergebnis"
@@ -8416,7 +8450,7 @@ msgstr "Verbaute Objekte"
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr "Seriennummer"
@@ -8500,48 +8534,48 @@ msgstr "Löschen wenn leer"
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr "Ablaufdatum"
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr "Externer Standort"
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr "überfällig"
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr "Menge ist erforderlich"
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr "Gültiges Teil muss angegeben werden"
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr "Der angegebene Lieferantenartikel existiert nicht"
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr "Seriennummern können für nicht verfolgbare Teile nicht angegeben werden"
@@ -8582,7 +8616,7 @@ msgstr "Besitzer auswählen"
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr "Lagerartikel können nicht direkt an einen strukturellen Lagerort verlegt werden, können aber an einen untergeordneten Lagerort verlegt werden."
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr "Extern"
@@ -8591,7 +8625,7 @@ msgstr "Extern"
msgid "This is an external stock location"
msgstr "Dies ist ein externer Lagerort"
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr "Sie können diesen Lagerort nicht als strukturell markieren, da sich ber
msgid "Stock items cannot be located into structural stock locations!"
msgstr "Lagerartikel können nicht in strukturelle Lagerorte abgelegt werden!"
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr "Für virtuelle Teile können keine Lagerartikel erstellt werden"
@@ -8653,7 +8687,7 @@ msgstr "Passendes Zuliefererteil für diesen Lagerartikel auswählen"
msgid "Where is this stock item located?"
msgstr "Wo wird dieses Teil normalerweise gelagert?"
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr "Verpackung, in der dieser Lagerartikel gelagert ist"
@@ -8665,7 +8699,7 @@ msgstr "Ist dieses Teil in einem anderen verbaut?"
msgid "Serial number for this item"
msgstr "Seriennummer für dieses Teil"
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr "Losnummer für diesen Lagerartikel"
@@ -8742,249 +8776,257 @@ msgstr "Seriennummern muss eine Liste von Ganzzahlen sein"
msgid "Quantity does not match serial numbers"
msgstr "Anzahl stimmt nicht mit den Seriennummern überein"
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr "Seriennummern existieren bereits"
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr "Artikel wurde einem Kundenauftrag zugewiesen"
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr "Lagerartikel ist in anderem Element verbaut"
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr "Lagerartikel enthält andere Artikel"
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr "Artikel wurde einem Kunden zugewiesen"
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr "Lagerartikel wird aktuell produziert"
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr "Nachverfolgbare Lagerartikel können nicht zusammengeführt werden"
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr "Artikel duplizeren"
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr "Lagerartikel müssen auf dasselbe Teil verweisen"
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr "Lagerartikel müssen auf dasselbe Lieferantenteil verweisen"
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr "Status-Codes müssen zusammenpassen"
-#: stock/models.py:1807
+#: stock/models.py:1868
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:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr "Eintrags-Notizen"
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr "Wert muss für diesen Test angegeben werden"
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr "Anhang muss für diesen Test hochgeladen werden"
-#: stock/models.py:2344
-msgid "Test name"
-msgstr "Name des Tests"
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr "Testergebnis"
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr "Test Ausgabe Wert"
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr "Test Ergebnis Anhang"
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr "Test Notizen"
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr "Seriennummer ist zu lang"
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr "Einkaufspreis dieses Lagerartikels, pro Einheit oder Verpackungseinheit"
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr "Anzahl der zu serialisierenden Lagerartikel eingeben"
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr "Anzahl darf nicht die verfügbare Menge überschreiten ({q})"
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr "Seriennummern für neue Teile eingeben"
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr "Ziel-Bestand"
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr "Optionales Notizfeld"
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr "Seriennummern können diesem Teil nicht zugewiesen werden"
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr "Lagerartikel für Installation auswählen"
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr " Transaktionsnotizen hinzufügen (optional)"
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr "Lagerartikel ist nicht verfügbar"
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr "Ausgewähltes Teil ist nicht in der Stückliste"
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr "Ziel Lagerort für unverbautes Objekt"
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr "Wählen Sie einen Teil aus, zu dem dieser Lagerartikel geändert werden soll"
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr "Das ausgewählte Teil ist keine gültige Option für die Umwandlung"
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr "Ziel Lagerort für zurückgegebene Artikel"
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr "Teil muss verkaufbar sein"
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr "Artikel ist einem Kundenauftrag zugeordnet"
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr "Artikel ist einem Fertigungsauftrag zugeordnet"
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr "Kunde zum Zuweisen von Lagerartikel"
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr "Ausgewählte Firma ist kein Kunde"
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr "Notizen zur Lagerzuordnung"
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr "Eine Liste der Lagerbestände muss angegeben werden"
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr "Notizen zur Lagerartikelzusammenführung"
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr "Unterschiedliche Lieferanten erlauben"
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Lieferanten erlauben"
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr "Unterschiedliche Status erlauben"
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Status-Codes erlauben"
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr "Mindestens zwei Lagerartikel müssen angegeben werden"
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr "Primärschlüssel Lagerelement"
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr "Bestandsbewegungsnotizen"
@@ -9009,7 +9051,7 @@ msgstr "Testdaten"
msgid "Test Report"
msgstr "Test-Bericht"
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr "Testdaten löschen"
@@ -9025,15 +9067,15 @@ msgstr "Lagerartikel-Notizen"
msgid "Installed Stock Items"
msgstr "Installierte Lagerartikel"
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr "Lagerartikel installieren"
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr "Alle Testergebnisse für diesen Lagerartikel löschen"
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr "Bestands-Anpassungs Aktionen"
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr "Bestand zählen"
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr "Bestand hinzufügen"
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr "Bestand entfernen"
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr "Bestand serialisieren"
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr "Bestand verschieben"
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr "Kunden zuweisen"
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr "Keine Inventur ausgeführt"
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr "Neuer Lagerort"
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr "Startseite"
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ 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:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "Bestätigen"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr "Klicken Sie auf den folgenden Link, um diesen Teil anzuzeigen"
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr "Mindestmenge"
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr "Fehler in Formular"
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr "Suchbegriff eingeben"
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/el/LC_MESSAGES/django.po b/InvenTree/locale/el/LC_MESSAGES/django.po
index 712a2e535d8e..2421ad7a13b3 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:42\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Language: el_GR\n"
@@ -51,18 +51,18 @@ msgstr "Μπορείτε να βρείτε λεπτομέρειες σφάλμα
msgid "Enter date"
msgstr "Εισάγετε ημερομηνία"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Εισάγετε ημερομηνία"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Σημειώσεις"
@@ -127,42 +127,42 @@ msgstr "Ο παρεχόμενος τομέας ηλεκτρονικού ταχυ
msgid "Registration is disabled."
msgstr "Η εγγραφή είναι απενεργοποιημένη."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Μη έγκυρη ποσότητα"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Κενό σειριακό αριθμό συμβολοσειράς"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Διπλότυπο serial number"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr "Μη έγκυρο εύρος ομάδας: {group}"
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Το εύρος της ομάδας {group} υπερβαίνει την επιτρεπόμενη ποσότητα ({expected_quantity})"
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr "Μη έγκυρη ακολουθία ομάδας: {group}"
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Δεν βρέθηκαν σειριακοί αριθμοί"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Ο αριθμός μοναδικών σειριακών αριθμών ({len(serials)}) πρέπει να αντιστοιχεί στην ποσότητα ({expected_quantity})"
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Αφαιρέστε τα HTML tags από την τιμή που εισάγατε"
@@ -386,7 +386,7 @@ msgstr "Το αρχείο λείπει"
msgid "Missing external link"
msgstr "Λείπει ο εξωτερικός σύνδεσμος"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Συνημμένο"
msgid "Select file to attach"
msgstr "Επιλέξτε αρχείο για επισύναψη"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Σχόλιο"
msgid "File comment"
msgstr "Σχόλιο αρχείου"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Χρήστης"
@@ -474,9 +474,9 @@ msgstr "Διπλότυπα ονόματα δεν μπορούν να υπάρχ
msgid "Invalid choice"
msgstr "Μη έγκυρη επιλογή"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Μη έγκυρη επιλογή"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Όνομα"
@@ -500,8 +500,8 @@ msgstr "Όνομα"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Όνομα"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Όνομα"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Περιγραφή"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "γονέας"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Μονοπάτι"
@@ -576,104 +576,104 @@ msgstr "Σφάλμα διακομιστή"
msgid "An error has been logged by the server."
msgstr "Ένα σφάλμα έχει καταγραφεί από το διακομιστή."
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Πρέπει να είναι αριθμός"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Νόμισμα"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr "Επιλέξτε νόμισμα από τις διαθέσιμες επιλογές"
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Όνομα αρχείου"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Μη έγκυρη τιμή"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "Αρχείο Δεδομένων"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Επιλέξτε ένα αρχείο για ανέβασμα"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Μη υποστηριζόμενος τύπος αρχείου"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "Το αρχείο είναι πολύ μεγάλο"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "Δεν βρέθηκαν στήλες στο αρχείο"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "Δεν βρέθηκαν γραμμές δεδομένων στο αρχείο"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Δεν παρασχέθηκαν σειρές δεδομένων"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Δεν δόθηκαν στήλες δεδομένων"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Λείπει απαιτούμενη στήλη: '{name}'"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Διπλή στήλη: '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "Διεύθυνση URL του αρχείου απομακρυσμένης εικόνας"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "Η λήψη εικόνων από απομακρυσμένο URL δεν είναι ενεργοποιημένη"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Ο έλεγχος εργασίας στο παρασκήνιο απέτυχε"
@@ -813,7 +813,7 @@ msgstr "Έγινε διαχωρισμός από το γονεϊκό αρχεί
msgid "Split child item"
msgstr "Διαχωρίστηκε θυγατρικό στοιχείο"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Έγινε συγχώνευση αποθεμάτων"
@@ -833,7 +833,7 @@ msgstr "Η έξοδος της σειράς κατασκευής ολοκληρ
msgid "Build order output rejected"
msgstr ""
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr "Κατανάλωση με εντολή κατασκευής"
@@ -933,14 +933,14 @@ msgstr "Σχετικά με το InvenTree"
msgid "Build must be cancelled before it can be deleted"
msgstr "Η έκδοση πρέπει να ακυρωθεί πριν διαγραφεί"
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr ""
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr ""
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Σειρά Κατασκευής"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "Αναφορά Παραγγελίας Κατασκευής"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατα
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατα
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατα
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Εξάρτημα"
@@ -1099,7 +1099,7 @@ msgstr "Κωδικός Παραγγελίας Πωλήσεων"
msgid "SalesOrder to which this build is allocated"
msgstr "SalesOrder στην οποία έχει διατεθεί αυτό το build"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "Κατάσταση Κατασκευής"
msgid "Build status code"
msgstr "Κωδικός κατάστασης κατασκευής"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "Κωδικός Παρτίδας"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "Κωδικός παρτίδας για αυτήν την κατασκευή"
@@ -1258,27 +1258,32 @@ msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθ
msgid "Build output does not match Build Order"
msgstr "Η έξοδος κατασκευής δεν ταιριάζει με την παραγγελία κατασκευής"
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr "Η ποσότητα πρέπει να είναι μεγαλύτερη από 0"
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr ""
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr ""
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr ""
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr ""
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "Ποσότητα"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Το στοιχείο κατασκευής πρέπει να ορίζει μια έξοδο κατασκευής, καθώς το κύριο τμήμα επισημαίνεται ως ανιχνεύσιμο"
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr "Η καταχωρημένη ποσότητα ({q}) δεν πρέπει να υπερβαίνει τη διαθέσιμη ποσότητα αποθέματος ({a})"
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr "Στοιχείο αποθέματος είναι υπερ-κατανεμημένο"
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr "Η ποσότητα πρέπει να είναι μεγαλύτερη από 0"
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr "Η ποσότητα πρέπει να είναι 1 για σειριακό απόθεμα"
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr ""
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "Στοιχείο Αποθέματος"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr "Στοιχείο πηγαίου αποθέματος"
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr "Ποσότητα αποθέματος για διάθεση για κατασκευή"
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr "Εγκατάσταση σε"
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr "Αποθήκη προορισμού"
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr "Κατασκευή Εξόδου"
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr "Η έξοδος κατασκευής δεν ταιριάζει με την παραγγελία κατασκευής"
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr "Το εξερχόμενο μέρος δεν ταιριάζει με το μέρος BuildOrder"
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί"
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr "Αυτή η έξοδος κατασκευής δεν έχει εκχωρηθεί πλήρως"
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr "Εισάγετε ποσότητα για την έξοδο κατασκευής"
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr "Ακέραιη ποσότητα που απαιτείται για ανιχνεύσιμα μέρη"
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr "Ακέραιη ποσότητα που απαιτείται, καθώς ο λογαριασμός των υλικών περιέχει ανιχνεύσιμα μέρη"
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "Σειριακοί αριθμοί"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr "Εισάγετε ποσότητα για την έξοδο κατασκευής"
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr "Αυτόματη Κατανομή Σειριακών Αριθμών"
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr ""
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr ""
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr ""
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr ""
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr ""
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr ""
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr ""
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr ""
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr ""
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr ""
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr ""
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr ""
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr ""
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr ""
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr ""
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
@@ -3953,7 +3967,7 @@ msgstr ""
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr ""
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr ""
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr ""
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr ""
msgid "Select supplier"
msgstr ""
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr ""
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr ""
@@ -4199,13 +4213,13 @@ msgstr ""
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr ""
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr ""
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr ""
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr ""
@@ -4809,7 +4823,7 @@ msgstr ""
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr ""
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr ""
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr ""
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr ""
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr ""
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -5919,7 +5937,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr ""
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr ""
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr ""
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr ""
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -7448,7 +7482,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr ""
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr ""
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr ""
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po
index 21f40562acc2..942c2c672d7b 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: 2024-02-15 00:38+0000\n"
+"POT-Creation-Date: 2024-02-16 07:34+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -397,7 +397,7 @@ msgstr ""
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2924 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -428,9 +428,9 @@ msgstr ""
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2400
+#: common/models.py:2401 common/models.py:2625 common/models.py:2626
+#: common/models.py:2871 common/models.py:2872 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
@@ -475,7 +475,7 @@ msgstr ""
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2612 common/models.py:3010
#: common/serializers.py:370 company/models.py:605 label/models.py:115
#: machine/models.py:24 part/models.py:850 part/models.py:3587
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
@@ -1084,7 +1084,7 @@ msgstr ""
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:3207
msgid "Part"
msgstr ""
@@ -1276,7 +1276,7 @@ msgstr ""
#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/templates/build/detail.html:34 common/models.py:2422
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
#: part/forms.py:48 part/models.py:3147 part/models.py:3981
@@ -1434,7 +1434,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:336 stock/api.py:952
msgid "The following serial numbers already exist or are invalid"
msgstr ""
@@ -1651,7 +1651,7 @@ msgid "Allocate optional BOM items to build order"
msgstr ""
#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: stock/api.py:719
msgid "BOM Item"
msgstr ""
@@ -2144,1340 +2144,1340 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr ""
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr ""
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
+#: common/models.py:1448 part/admin.py:108 part/models.py:3743
#: report/models.py:180 templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:430 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr ""
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr ""
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr ""
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr ""
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1992 common/models.py:2392
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2033
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2035
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2041
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2042
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2047
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2048
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2053
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2054
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2059
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2060
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2065
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2066
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2071
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2072
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2077
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2078
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2083
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2084
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2089
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2090
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2095
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2096
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2101
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2102
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2107
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2108
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2113
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2114
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2119
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2120
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2125
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2126
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2131
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2132
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2137
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2138
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2143
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2144
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2149
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2151
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2157
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2159
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2165
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2167
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2173
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2174
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2179
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2180
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2185
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2186
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2191
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2192
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2197
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2198
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2203
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2204
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2209
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2211
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2217
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2218
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2223
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2224
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2229
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2230
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2235
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2236
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2241
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2243
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2249
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2250
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2255
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2257
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2263
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2264
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2269
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2271
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2277
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2279
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2285
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2286
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2291
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2292
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2297
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2298
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2303
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2304
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2309
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2310
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2315
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2316
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2329 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2330
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2335 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2337
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2343
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2345
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2351
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2352
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2357
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2359
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2365
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2367
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2373
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2374
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2379
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2380
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2423
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2430 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3485,23 +3485,23 @@ msgstr ""
msgid "Price"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2431
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2602 common/models.py:2787
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2603
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2613
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2617 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3511,101 +3511,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2617
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2633 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2634
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2642
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2643
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2751
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2752
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2760
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2761
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2769
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2770
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2777
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2778
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2788
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2793
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2794
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2920
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2922 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2926 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2928 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2930 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2933
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2933
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2950 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3615,31 +3615,31 @@ msgstr ""
msgid "Image"
msgstr ""
-#: common/models.py:2938
+#: common/models.py:2950
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:2992
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3011
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3018 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3019
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3027
msgid "Unit definition"
msgstr ""
@@ -3850,7 +3850,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:735
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr ""
@@ -4677,48 +4677,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -6012,7 +6012,7 @@ msgstr ""
#: part/models.py:891 part/models.py:3371 part/models.py:3812
#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/templates/part/part_base.html:260 stock/api.py:707
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -7772,7 +7772,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8060,17 +8060,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8505,44 +8505,44 @@ msgstr ""
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:542 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:727
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:755
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:759
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:762 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:848
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:854
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:885
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:895
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:926
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -9010,7 +9010,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9026,15 +9026,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3242
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1667
msgid "Add Test Result"
msgstr ""
@@ -9836,7 +9836,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9947,7 +9947,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10295,7 +10295,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr ""
@@ -11249,7 +11249,7 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
msgid "Select"
@@ -11620,61 +11620,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -13023,7 +13023,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3270
msgid "Select Stock Items"
msgstr ""
@@ -13244,51 +13244,51 @@ msgstr ""
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3110 templates/js/translated/stock.js:3146
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3168
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3189
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3190
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3192
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3193
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3194
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3195
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3208
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3271
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3284
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3288
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po
index fef15b05aa86..3692219e9910 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Spanish, Mexico\n"
"Language: es_MX\n"
@@ -51,18 +51,18 @@ msgstr "Detalles del error pueden encontrarse en el panel de administración"
msgid "Enter date"
msgstr "Ingrese la fecha"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Ingrese la fecha"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Notas"
@@ -127,42 +127,42 @@ msgstr "El dominio de correo electrónico proporcionado no está aprobado."
msgid "Registration is disabled."
msgstr "Registro deshabilitado."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Cantidad proporcionada no válida"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "No se ha proporcionado un número de serie"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Serie duplicada"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr "Rango de grupo inválido: {group}"
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Rango del grupo {group} supera la cantidad permitida ({expected_quantity})"
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr "Secuencia de grupo inválida: {group}"
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Numeros de serie no encontrados"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Los números de serie únicos ({len(serials)}) debe coincidir con la cantidad ({expected_quantity})"
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Eliminar etiquetas HTML de este valor"
@@ -386,7 +386,7 @@ msgstr "Archivo no encontrado"
msgid "Missing external link"
msgstr "Falta enlace externo"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Archivo adjunto"
msgid "Select file to attach"
msgstr "Seleccionar archivo para adjuntar"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Comentario"
msgid "File comment"
msgstr "Comentario del archivo"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Usuario"
@@ -474,9 +474,9 @@ msgstr "Los nombres duplicados no pueden existir bajo el mismo padre"
msgid "Invalid choice"
msgstr "Selección no válida"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Selección no válida"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Nombre"
@@ -500,8 +500,8 @@ msgstr "Nombre"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Nombre"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Nombre"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Descripción"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "padre"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Ruta"
@@ -576,104 +576,104 @@ msgstr "Error de servidor"
msgid "An error has been logged by the server."
msgstr "Se ha registrado un error por el servidor."
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Debe ser un número válido"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Moneda"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr "Seleccionar moneda de las opciones disponibles"
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr "No tiene permiso para cambiar este rol de usuario."
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr "Solo los superusuarios pueden crear nuevos usuarios"
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Nombre de Archivo"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Valor inválido"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "Archivo de datos"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Seleccione el archivo para subir"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Tipo de archivo no soportado"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "El archivo es demasiado grande"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "No hay columnas en el archivo"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "No hay filas de datos en el archivo"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "No se proporcionaron filas de datos"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "No hay columnas de datos proporcionadas"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Falta la columna requerida: '{name}'"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Columna duplicada: '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr "Imagen remota"
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "URL de imagen remota"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "La descarga de imágenes desde la URL remota no está habilitada"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Falló la comprobación en segundo plano del worker"
@@ -813,7 +813,7 @@ msgstr "Separar del artículo principal"
msgid "Split child item"
msgstr "Dividir artículo secundario"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Artículos de stock combinados"
@@ -833,7 +833,7 @@ msgstr "Construir orden de salida completado"
msgid "Build order output rejected"
msgstr "Orden de ensamble rechazada"
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr "Consumido por orden de construcción"
@@ -933,14 +933,14 @@ msgstr "Acerca de InvenTree"
msgid "Build must be cancelled before it can be deleted"
msgstr "La compilación debe cancelarse antes de poder ser eliminada"
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr "Consumible"
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr "Asignadas"
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr "Disponible"
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Construir órden"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "Número de orden de construcción o armado"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "Orden de Construcción o Armado a la que se asigna"
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "Orden de Construcción o Armado a la que se asigna"
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "Orden de Construcción o Armado a la que se asigna"
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Parte"
@@ -1099,7 +1099,7 @@ msgstr "Referencia de orden de venta"
msgid "SalesOrder to which this build is allocated"
msgstr "Orden de Venta a la que se asigna"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "Estado de la construcción"
msgid "Build status code"
msgstr "Código de estado de construcción"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "Numero de lote"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "Número de lote de este producto final"
@@ -1258,27 +1258,32 @@ msgstr "La construcción de la salida ya está completa"
msgid "Build output does not match Build Order"
msgstr "La salida de la construcción no coincide con el orden de construcción"
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr "La cantidad debe ser mayor que cero"
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr "La cantidad no puede ser mayor que la cantidad de salida"
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr "Ensamblar equipo"
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr "Ensamblar equipo"
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr "Ensamblar equipo"
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr "Ensamblar equipo"
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "Cantidad"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr "Cantidad requerida para orden de ensamble"
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Item de construcción o armado debe especificar un resultado o salida, ya que la parte maestra está marcada como rastreable"
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr "Cantidad asignada ({q}) no debe exceder la cantidad disponible de stock ({a})"
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr "Artículo de stock sobreasignado"
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr "Cantidad asignada debe ser mayor que cero"
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr "La cantidad debe ser 1 para el stock serializado"
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr "El artículo de almacén selelccionado no coincide con la línea BOM"
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr "El artículo de almacén selelccionado no coincide con la línea BOM"
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "Artículo de stock"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr "Producto original de stock"
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr "Cantidad de stock a asignar para construir"
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr "Instalar en"
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr "Artículo de stock de destino"
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr "Resultado de la construcción o armado"
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr "La salida de construcción no coincide con la construcción padre"
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr "La parte de salida no coincide con la parte de la Orden de Construcción"
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr "Esta salida de construcción ya ha sido completada"
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr "Esta salida de construcción no está completamente asignada"
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr "Ingrese la cantidad para la producción de la construcción"
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr "Cantidad entera requerida para partes rastreables"
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr "Cantidad entera requerida, ya que la factura de materiales contiene partes rastreables"
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "Números de serie"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr "Introduzca los números de serie de salidas de construcción"
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr "Autoasignar Números de Serie"
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Asignar automáticamente los artículos requeridos con números de serie coincidentes"
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr "Los siguientes números seriales ya existen o son inválidos"
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr "Debe proporcionarse una lista de salidas de construcción"
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr "Debe proporcionarse una lista de salidas de construcción"
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr "Ubicación"
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr "Ubicación de almacén para salidas descartadas"
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr "Descartar asignaciones"
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr "Descartar cualquier asignación de existencias para las salidas descartadas"
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr "Razón para descartar la salida de ensamble(s)"
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr "Ubicación para las salidas de construcción completadas"
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "Estado"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr "Aceptar Asignación Incompleta"
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr "Completar salidas si el inventario no se ha asignado completamente"
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr "Quitar inventario asignado"
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr "Resta cualquier existencia que ya ha sido asignado a esta versión"
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr "Eliminar salidas incompletas"
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr "Eliminar cualquier salida de construcción que no se haya completado"
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr "No permitido"
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr "Aceptar como consumido por este pedido de construcción"
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr "Liberar antes de completar esta orden de construcción"
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr "Stock sobreasignado"
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr "Cómo quieres manejar los artículos extra de inventario asignados a la orden de construcción"
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr "Algunos artículos de inventario han sido sobreasignados"
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr "Aceptar no asignado"
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr "Aceptar que los artículos de stock no se han asignado completamente a este pedido de construcción"
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr "El stock requerido no ha sido completamente asignado"
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr "Aceptar incompleto"
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr "Aceptar que el número requerido de salidas de construcción no se han completado"
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr "La cantidad de construcción requerida aún no se ha completado"
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr "El orden de construcción tiene salidas incompletas"
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr "Linea de ensamble"
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr "Resultado de la construcción o armado"
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr "La salida de la construcción debe apuntar a la misma construcción"
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr "Crear partida"
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr "bom_item.part debe apuntar a la misma parte que la orden de construcción"
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr "El artículo debe estar en stock"
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Cantidad disponible ({q}) excedida"
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr "La salida de la construcción debe especificarse para la asignación de partes rastreadas"
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr "La salida de construcción no se puede especificar para la asignación de partes no rastreadas"
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr "Debe proporcionarse la adjudicación de artículos"
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Ubicación de inventario donde las partes deben ser obtenidas (dejar en blanco para tomar de cualquier ubicación)"
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr "Excluir ubicación"
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr "Excluir artículos de stock de esta ubicación seleccionada"
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr "Stock intercambiable"
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Los artículos de inventario en múltiples ubicaciones se pueden utilizar de forma intercambiable"
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr "Sustituir stock"
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr "Permitir la asignación de partes sustitutas"
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr "Elementos opcionales"
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr "Asignar artículos de la BOM opcionales para construir la orden"
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr "Item de Lista de Materiales"
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr "En pedido"
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr "Salidas completadas"
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr "Orden de Venta"
@@ -1908,10 +1913,10 @@ msgstr "Partes asignadas"
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr "Nombre de dominio inválido: {domain}"
msgid "No plugin"
msgstr "Sin plugin"
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr "Reinicio requerido"
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr "Se ha cambiado una configuración que requiere un reinicio del servidor"
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr "Migraciones pendientes"
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr "Número de migraciones de base de datos pendientes"
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr "Nombre de la instancia del servidor"
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr "Descriptor de cadena para la instancia del servidor"
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr "Usar nombre de instancia"
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr "Utilice el nombre de la instancia en la barra de título"
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr "Restringir mostrar 'acerca de'"
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr "Mostrar la modal `about` solo para superusuarios"
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr "Nombre de empresa"
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr "Nombre interno de empresa"
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr "URL Base"
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr "URL base para la instancia del servidor"
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr "Moneda predeterminada"
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr "Seleccione la moneda base para los cálculos de precios"
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr "Intervalo de actualización de moneda"
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr "Con qué frecuencia actualizar los tipos de cambio (establecer a cero para desactivar)"
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr "días"
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr "Plugin de Actualización de Moneda"
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr "Plugin de actualización de moneda a usar"
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr "Descargar desde URL"
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr "Permitir la descarga de imágenes y archivos remotos desde la URL externa"
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr "Límite de tamaño de descarga"
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr "Tamaño máximo de descarga permitido para la imagen remota"
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr "Agente de usuario usado para descargar desde la URL"
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr "Permitir reemplazar el agente de usuario utilizado para descargar imágenes y archivos desde URL externa (dejar en blanco para el valor predeterminado)"
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr "Validación estricta de URL"
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr "Requerir especificación de esquema al validar URLs"
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr "Requiere confirmación"
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr "Requiere confirmación explícita del usuario para ciertas acciones."
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr "Profundidad del árbol"
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr "Profundidad de árbol predeterminada para treeview. Los niveles más profundos pueden ser cargados perezosamente a medida que son necesarios."
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr "Actualizar intervalo de actualización"
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr "Con qué frecuencia comprobar actualizaciones (establecer a cero para desactivar)"
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr "Copia de seguridad automática"
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr "Activar copia de seguridad automática de los archivos de base de datos y medios"
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr "Intervalo de respaldo automático"
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr "Especificar número de días entre eventos automatizados de copia de seguridad"
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr "Intervalo de eliminación de tareas"
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr "Los resultados de las tareas en segundo plano se eliminarán después del número especificado de días"
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr "Intervalo de eliminación de registro de errores"
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr "Los registros de errores se eliminarán después del número especificado de días"
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr "Intervalo de eliminación de notificaciones"
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr "Las notificaciones de usuario se eliminarán después del número especificado de días"
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Soporte de código de barras"
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr "Habilitar el soporte para escáner de códigos de barras en la interfaz web"
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr "Retraso de entrada de código de barras"
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr "Tiempo de retraso en la lectura de códigos de barras"
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr "Soporte para Webcam de código de barras"
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr "Permitir escaneo de código de barras a través de webcam en el navegador"
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr "Revisiones de partes"
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr "Habilitar campo de revisión para parte"
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr "Regex IPN"
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr "Patrón de expresión regular para IPN de la parte coincidente"
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr "Permitir IPN duplicado"
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr "Permitir que varias partes compartan el mismo IPN"
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr "Permitir editar IPN"
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr "Permite cambiar el valor de IPN mientras se edita una parte"
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr "Copiar parte de datos BOM"
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr "Copiar datos BOM por defecto al duplicar una parte"
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr "Copiar parámetros de parte"
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr "Copiar datos de parámetro por defecto al duplicar una parte"
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr "Copiar parte de datos de prueba"
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr "Copiar datos de parámetro por defecto al duplicar una parte"
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr "Copiar plantillas de parámetros de categoría"
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr "Copiar plantillas de parámetros de categoría al crear una parte"
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr "Plantilla"
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr "Las partes son plantillas por defecto"
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr "Montaje"
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr "Las partes pueden ser ensambladas desde otros componentes por defecto"
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr "Componente"
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr "Las partes pueden ser usadas como subcomponentes por defecto"
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr "Comprable"
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr "Las partes son comprables por defecto"
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr "Vendible"
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr "Las partes se pueden vender por defecto"
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr "Rastreable"
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr "Las partes son rastreables por defecto"
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr "Virtual"
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr "Las partes son virtuales por defecto"
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr "Mostrar importación en vistas"
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr "Mostrar el asistente de importación en algunas vistas de partes"
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr "Mostrar partes relacionadas"
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr "Mostrar partes relacionadas para una parte"
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr "Datos iniciales de existencias"
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr "Permitir la creación del stock inicial al añadir una nueva parte"
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr "Datos iniciales del proveedor"
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr "Permitir la creación de datos iniciales del proveedor al agregar una nueva parte"
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr "Formato de visualización de Nombre de Parte"
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr "Formato para mostrar el nombre de la parte"
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr "Icono por defecto de la categoría de parte"
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr "Icono por defecto de la categoría de parte (vacío significa que no hay icono)"
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr "Forzar unidades de parámetro"
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr "Si se proporcionan unidades, los valores de parámetro deben coincidir con las unidades especificadas"
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr "Mínimo de lugares decimales en el precio"
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr "Número mínimo de decimales a mostrar al procesar los datos de precios"
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr "Máximo de lugares decimales en el precio"
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr "Número máximo de decimales a mostrar al procesar los datos de precios"
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr "Usar precios de proveedor"
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr "Incluir descuentos de precios del proveedor en los cálculos generales de precios"
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr "Anulación del historial de compra"
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr "El precio histórico de compra anula los descuentos de precios del proveedor"
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr "Usar precio del artículo de almacén"
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr "Usar los precios de los datos de inventario introducidos manualmente para los cálculos de precios"
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr "Edad del precio del artículo de almacén"
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr "Excluir artículos de almacén anteriores a este número de días de los cálculos de precios"
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr "Usar precios variantes"
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr "Incluir variantes de precios en los cálculos generales de precios"
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr "Solo variantes activas"
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr "Usar solo partes de variantes activas para calcular los precios de variantes"
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr "Intervalo de reconstrucción de precios"
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr "Número de días antes de que el precio de la parte se actualice automáticamente"
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr "Precios internos"
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr "Habilitar precios internos para partes"
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr "Anulación del precio interno"
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr "Si está disponible, los precios internos anulan los cálculos del rango de precios"
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr "Habilitar impresión de etiquetas"
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr "Habilitar impresión de etiquetas desde la interfaz web"
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr "PPP de la imagen de etiqueta"
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr "Resolución DPI al generar archivos de imagen que suministrar para etiquetar complementos de impresión"
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr "Habilitar informes"
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr "Habilitar generación de informes"
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr "Modo de depuración"
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr "Generar informes en modo de depuración (salida HTML)"
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr "Tamaño de página"
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr "Tamaño de página predeterminado para informes PDF"
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr "Habilitar informes de prueba"
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr "Habilitar generación de informes de prueba"
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr "Adjuntar informes de prueba"
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr "Al imprimir un informe de prueba, adjuntar una copia del informe de prueba al artículo de almacén asociado"
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr "Seriales únicos globalmente"
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr "Los números de serie para los artículos de inventario deben ser únicos globalmente"
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr "Autollenar números de serie"
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr "Autorellenar números de serie en formularios"
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr "Eliminar existencias agotadas"
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr "Determina el comportamiento predeterminado cuando un artículo de almacén es agotado"
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr "Plantilla de código de lote"
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr "Plantilla para generar códigos de lote por defecto para artículos de almacén"
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr "Expiración de stock"
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr "Habilitar la funcionalidad de expiración de stock"
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr "Vender existencias caducadas"
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr "Permitir venta de existencias caducadas"
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr "Tiempo histórico de Stock"
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr "Número de días de artículos de stock se consideran obsoletos antes de caducar"
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr "Crear Stock Caducado"
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr "Permitir crear con stock caducado"
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr "Control de Stock"
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr "Habilitar control de propiedad sobre ubicaciones de stock y artículos"
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr "Icono por defecto de ubicación de almacén"
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr "Icono por defecto de ubicación de almacén (vacío significa que no hay icono)"
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr "Mostrar Articulos de Stock Instalados"
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr "Mostrar los artículos de stock instalados en las tablas de stock"
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr "Patrón de Referencia de Ordenes de Armado"
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr "Patrón requerido para generar el campo de referencia de la Orden de Ensamblado"
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr "Habilitar órdenes de devolución"
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr "Habilitar la funcionalidad de orden de devolución en la interfaz de usuario"
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr "Patrón de referencia de orden de devolución"
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr "Patrón requerido para generar el campo de referencia de la orden de devolución"
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr "Editar ordenes de devolución completadas"
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr "Permitir la edición de ordenes de devolución después de que hayan sido completados"
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr "Patrón de Referencia de Ordenes de Venta"
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr "Patrón requerido para generar el campo de referencia de la orden de venta"
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr "Envío Predeterminado de Ordenes de Venta"
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr "Habilitar la creación de envío predeterminado con ordenes de entrega"
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr "Editar Ordenes de Venta Completados"
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr "Permitir la edición de ordenes de venta después de que hayan sido enviados o completados"
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr "Patrón de Referencia de Orden de Compra"
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr "Patrón requerido para generar el campo de referencia de la Orden de Compra"
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr "Editar Ordenes de Compra Completados"
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr "Autocompletar Ordenes de compra"
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr "Habilitar función de contraseña olvidada"
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr "Activar la función olvido de contraseña en las páginas de inicio de sesión"
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr "Habilitar registro"
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr "Activar auto-registro para usuarios en las páginas de inicio de sesión"
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr "Habilitar SSO"
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr "Habilitar SSO en las páginas de inicio de sesión"
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr "Habilitar registro SSO"
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr "Activar autoregistro a través de SSO para usuarios en las páginas de inicio de sesión"
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr "Email requerido"
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr "Requiere usuario para suministrar correo al registrarse"
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr "Auto-rellenar usuarios SSO"
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Rellenar automáticamente los datos de usuario de la cuenta SSO"
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr "Correo dos veces"
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr "Al registrarse pregunte dos veces a los usuarios por su correo"
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr "Contraseña dos veces"
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr "Al registrarse, preguntar dos veces a los usuarios por su contraseña"
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr "Dominios permitidos"
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr "Grupo al registrarse"
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr "Grupo al que se asignan nuevos usuarios al registrarse"
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr "Forzar MFA"
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr "Los usuarios deben utilizar seguridad multifactor."
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr "Comprobar complementos al iniciar"
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr "Comprobar que todos los complementos están instalados en el arranque - habilitar en entornos de contenedores"
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr "Habilitar integración de URL"
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr "Habilitar plugins para añadir rutas de URL"
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr "Habilitar integración de navegación"
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr "Habilitar plugins para integrar en la navegación"
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr "Habilitar integración de la aplicación"
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr "Habilitar plugins para añadir aplicaciones"
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr "Habilitar integración de programación"
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr "Habilitar plugins para ejecutar tareas programadas"
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr "Habilitar integración de eventos"
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr "Habilitar plugins para responder a eventos internos"
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr "Habilitar códigos de proyecto"
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr "Habilitar códigos de proyecto para rastrear proyectos"
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr "Excluir Ubicaciones Externas"
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr "Intervalo de borrado de informe"
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr "Mostrar nombres completos de los usuarios"
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr "Mostrar nombres completos de usuarios en lugar de nombres de usuario"
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr "Tecla de ajustes (debe ser única - mayúsculas y minúsculas"
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr "Ocultar partes inactivas"
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr "Ocultar partes inactivas en los resultados mostrados en la página de inicio"
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr "Mostrar partes suscritas"
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr "Mostrar las partes suscritas en la página principal"
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr "Mostrar categorías suscritas"
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr "Mostrar categorías de partes suscritas en la página de inicio"
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr "Mostrar últimas partes"
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr "Mostrar las últimas partes en la página de inicio"
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr "Mostrar BOMs no validadas"
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr "Mostrar BOMs que esperan validación en la página de inicio"
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr "Mostrar cambios recientes de stock"
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr "Mostrar artículos de stock recientemente modificados en la página de inicio"
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr "Mostrar stock bajo"
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr "Mostrar artículos de stock bajo en la página de inicio"
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr "Mostrar stock agotado"
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr "Mostrar artículos agotados en la página de inicio"
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr "Mostrar stock necesario"
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr "Mostrar artículos de stock necesarios para trabajos en la página de inicio"
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr "Mostrar stock caducado"
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr "Mostrar artículos de stock caducados en la página de inicio"
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr "Mostrar stock obsoleto"
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr "Mostrar artículos de stock obsoletos en la página de inicio"
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr "Mostrar trabajos pendientes"
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr "Mostrar trabajos pendientes en la página de inicio"
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr "Mostrar trabajos vencidos"
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr "Mostrar trabajos pendientes en la página de inicio"
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr "Mostrar Órdenes de Compra Pendientes"
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr "Mostrar las OC destacadas en la página de inicio"
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr "Mostrar OC atrasadas"
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr "Mostrar las OC vencidas en la página de inicio"
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr "Mostrar OV pendiemtes"
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr "Mostrar OV pendientes en la página de inicio"
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr "Mostrar OV atrasadas"
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr "Mostrar OV atrasadas en la página de inicio"
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr "Mostrar novedades"
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr "Mostrar las últimas novedades de InvenTree en la página de inicio"
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr "Mostrar etiqueta interior"
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr "Mostrar etiquetas PDF en el navegador, en lugar de descargar como un archivo"
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr "Impresora predeterminada"
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr "Mostrar informe en línea"
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr "Mostrar informes PDF en el navegador, en lugar de descargar como un archivo"
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr "Buscar partes"
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr "Buscar partes de proveedor"
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr "Buscar Partes del Fabricante"
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr "Ocultar Partes Inactivas"
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr "Excluir las partes inactivas de la ventana de previsualización de búsqueda"
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr "Buscar categorías"
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr "Mostrar categorias de la parte en la ventana de previsualización de búsqueda"
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr "Buscar inventario"
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr "Mostrar artículos del stock en la ventana de previsualización de búsqueda"
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr "Ocultar Artículos del Stock Agotados"
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr "Excluir artículos de stock que no están disponibles en la ventana de previsualización de búsqueda"
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr "Buscar ubicaciones"
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr "Mostrar ubicaciones de almacén en la ventana de vista previa de búsqueda"
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr "Buscar empresas"
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr "Mostrar empresas en la ventana de vista previa de búsqueda"
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr "Buscar Pedidos de Construcción"
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr "Buscar órdenes de compra"
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr "Excluir pedidos de compra inactivos"
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr "Buscar órdenes de venta"
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr "Buscar órdenes de devolución"
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr "Resultados de la vista previa"
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr "Búsqueda usando una expresión regular"
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr "Habilitar expresiones regulares en las consultas de búsqueda"
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr "Búsqueda por palabra completa"
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr "Las consultas de búsqueda devuelven resultados para palabras enteras coincidentes"
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr "Mostrar cantidad en formularios"
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr "Mostrar la cantidad de partes disponibles en algunos formularios"
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr "Formularios de cierre de teclas de escape"
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr "Usa la clave de escape para cerrar formularios modales"
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr "Barra de navegación fija"
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr "La posición de la barra de navegación se fija en la parte superior de la pantalla"
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr "Formato de Fecha"
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr "Formato preferido para mostrar fechas"
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Planificación de partes"
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr "Recibir reportes de error"
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr "Cantidad de salto de precio"
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr "Cantidad de salto de precio"
msgid "Price"
msgstr "Precio"
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr "Precio unitario a la cantidad especificada"
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr "Endpoint"
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr "Punto final en el que se recibe este webhook"
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr "Nombre para este webhook"
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr "Nombre para este webhook"
msgid "Active"
msgstr "Activo"
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr "Está activo este webhook"
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr "Token"
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr "Token para el acceso"
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr "Clave"
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr "Secreto compartido para HMAC"
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr "ID de mensaje"
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr "Identificador único para este mensaje"
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr "Host"
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr "Servidor desde el cual se recibió este mensaje"
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr "Encabezado"
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr "Encabezado del mensaje"
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr "Cuerpo"
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr "Cuerpo de este mensaje"
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr "Endpoint en el que se recibió este mensaje"
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr "Trabajado en"
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr "¿El trabajo en este mensaje ha terminado?"
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr "Id"
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr "Título"
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr "Publicado"
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Autor"
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Resumen"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr "Leer"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr "¿Esta noticia ya fue leída?"
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr "¿Esta noticia ya fue leída?"
msgid "Image"
msgstr "Imágen"
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr "Archivo de imagen"
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr "Nombre de unidad debe ser un identificador válido"
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr "Nombre de unidad"
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr "Símbolo"
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr "Símbolo de unidad opcional"
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr "Definición"
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr "Definición de unidad"
@@ -3849,7 +3863,7 @@ msgstr "Moneda predeterminada utilizada para esta empresa"
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr "Empresa"
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr "Enlace a información de dirección (externa)"
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Parte base"
@@ -3953,7 +3967,7 @@ msgstr "Seleccionar parte"
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr "Seleccionar fabricante"
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr "Nombre del parámetro"
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr "Valor"
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr "Valor del parámetro"
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr "La parte vinculada del fabricante debe hacer referencia a la misma parte
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr "Proveedor"
msgid "Select supplier"
msgstr "Seleccionar proveedor"
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr "Unidad de mantenimiento de stock de proveedores"
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr "Descripción de la parte del proveedor"
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr "Nota"
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr "Cargo mínimo (p. ej., cuota de almacenamiento)"
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr "Paquetes"
@@ -4199,13 +4213,13 @@ msgstr "Borrar imagen"
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr "Cliente"
@@ -4463,7 +4477,7 @@ msgstr "Direcciones"
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr "Parte del proveedor"
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr "No hay información de proveedor disponible"
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr "Elementos de stock"
@@ -4676,48 +4690,48 @@ msgstr "Código QR"
msgid "QR code"
msgstr "Código QR"
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr "Desconocido"
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr "No se encontró ninguna orden de compra coincidente"
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr "Orden de compra"
@@ -4809,7 +4823,7 @@ msgstr "Orden de compra"
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr "Orden de devolución"
@@ -5008,9 +5022,9 @@ msgstr "Recibido"
msgid "Number of items received"
msgstr "Número de artículos recibidos"
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr "Precio de Compra"
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr "Usuario que revisó este envío"
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr "Envío"
@@ -5726,12 +5740,12 @@ msgstr "Actualizado el precio unitario de {part} a {price}"
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr "Actualizado el precio unitario de {part} a {price} y la cantidad a {qty}"
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr "ID de Parte"
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr "Nombre de parte"
@@ -5743,7 +5757,7 @@ msgstr "Descripción de parte"
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr "IPN"
@@ -5811,11 +5825,11 @@ msgstr "Costo mínimo"
msgid "Maximum Cost"
msgstr "Costo máximo"
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr "Identificador de la clase o especie padre"
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr "Nombre del padre"
@@ -5824,7 +5838,7 @@ msgstr "Nombre del padre"
msgid "Category Path"
msgstr "Ruta de Categoría"
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr "Ruta de Categoría"
msgid "Parts"
msgstr "Partes"
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr "Nivel de BOM"
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr "ID de artículo de BOM"
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr "IPN del padre"
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr "IPN de la parte"
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr "Precio mínimo"
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr "Precio máximo"
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr "Orden de compra entrante"
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr "Orden de venta saliente"
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr "Válido"
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr "Validación de Lista de Materiales"
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr "Esta opción debe ser seleccionada"
@@ -5904,7 +5922,7 @@ msgstr "Inventario Total"
msgid "Input quantity for price calculation"
msgstr "Cantidad de entrada para el cálculo del precio"
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Categoría de parte"
@@ -5919,7 +5937,7 @@ msgstr "Categorías de parte"
msgid "Default location for parts in this category"
msgstr "Ubicación predeterminada para partes de esta categoría"
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr "Parte con este nombre, IPN y revisión ya existe."
msgid "Parts cannot be assigned to structural part categories!"
msgstr "¡No se pueden asignar partes a las categorías de partes estructurales!"
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr "Nombre de la parte"
@@ -6009,9 +6027,9 @@ msgstr "Descripción de parte (opcional)"
msgid "Part keywords to improve visibility in search results"
msgstr "Palabras clave para mejorar la visibilidad en los resultados de búsqueda"
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr "Fecha"
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr "Las plantillas de prueba sólo pueden ser creadas para partes rastreables"
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr "Ya existe una prueba con este nombre para esta parte"
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr "Nombre de prueba"
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr "Introduzca un nombre para la prueba"
-#: part/models.py:3464
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
+msgstr ""
+
+#: part/models.py:3465
msgid "Test Description"
msgstr "Descripción de prueba"
-#: part/models.py:3465
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr "Introduce la descripción para esta prueba"
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr "Requerido"
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr "¿Es necesario pasar esta prueba?"
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr "Requiere valor"
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr "¿Esta prueba requiere un valor al agregar un resultado de la prueba?"
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr "Adjunto obligatorio"
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr "¿Esta prueba requiere un archivo adjunto al agregar un resultado de la prueba?"
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr "El nombre de parámetro en la plantilla tiene que ser único"
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr "Nombre de Parámetro"
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr "Casilla de verificación"
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr "¿Es este parámetro una casilla de verificación?"
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr "Opciones"
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr "Opciones válidas para este parámetro (separados por comas)"
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr "Opción inválida para el valor del parámetro"
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr "Parte principal"
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr "Plantilla de parámetro"
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr "Datos"
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr "Valor del parámetro"
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr "Valor predeterminado"
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr "Valor de parámetro por defecto"
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr "ID de parte o nombre de parte"
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr "Valor de ID de parte única"
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr "Valor IPN de parte"
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr "Nivel"
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr "Nivel de BOM"
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr "Seleccionar parte principal"
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr "Sub parte"
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr "Seleccionar parte a utilizar en BOM"
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr "Cantidad del artículo en BOM"
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr "Este artículo BOM es opcional"
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr "Este artículo de BOM es consumible (no está rastreado en órdenes de construcción)"
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Exceso"
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "Cantidad estimada de desperdicio de construcción (absoluta o porcentaje)"
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr "Referencia de artículo de BOM"
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr "Notas del artículo de BOM"
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr "Suma de verificación"
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr "Suma de verificación de línea de BOM"
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr "Validado"
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr "Este artículo de BOM ha sido validado"
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr "Este artículo BOM es heredado por BOMs para partes variantes"
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr "Permitir variantes"
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr "Artículos de stock para partes variantes pueden ser usados para este artículo BOM"
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr "La cantidad debe ser un valor entero para las partes rastreables"
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr "Debe especificar la subparte"
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr "Ítem de BOM sustituto"
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr "La parte sustituta no puede ser la misma que la parte principal"
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr "Artículo BOM superior"
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr "Sustituir parte"
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr "Parte 1"
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr "Parte 2"
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr "Seleccionar parte relacionada"
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr "Moneda de compra de ítem de stock"
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr "Parte original"
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr "Seleccione la parte original a duplicar"
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr "Copiar Imagen"
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr "Copiar imagen desde la parte original"
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr "Copiar BOM"
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr "Copiar la factura de materiales de la parte original"
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr "Copiar Parámetros"
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr "Copiar datos del parámetro de la parte original"
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr "Copiar Notas"
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr "Cantidad Inicial de Stock"
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr "Seleccione proveedor (o déjelo en blanco para saltar)"
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr "Seleccionar fabricante (o dejar en blanco para saltar)"
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr "Número de parte del fabricante"
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr "La empresa seleccionada no es un proveedor válido"
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr "La empresa seleccionada no es un fabricante válido"
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr "Duplicar Parte"
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr "Stock Inicial"
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr "Crear Parte con cantidad inicial de stock"
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr "Información del proveedor"
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr "Añadir información inicial del proveedor para esta parte"
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr "Copiar Parámetros de Categoría"
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr "Copiar plantillas de parámetro de la categoría de partes seleccionada"
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr "Imagen Existente"
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr "El archivo de imagen no existe"
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr "Generar informe"
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr "Actualizar partes"
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr "Anular el valor calculado para precio mínimo"
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr "Precio mínimo de moneda"
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr "Precio máximo de moneda"
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr "Actualizar"
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr "El precio mínimo no debe ser mayor que el precio máximo"
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr "El precio máximo no debe ser inferior al precio mínimo"
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr "Seleccionar parte de la que copiar BOM"
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr "Eliminar Datos Existentes"
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr "Eliminar artículos BOM existentes antes de copiar"
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr "Incluye Heredado"
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr "Incluye artículos BOM que son heredados de partes con plantillas"
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr "Omitir filas no válidas"
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr "Activar esta opción para omitir filas inválidas"
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr "Copiar partes sustitutas"
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr "Limpiar BOM Existente"
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr "Varios resultados encontrados"
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr "No se encontraron partes coincidentes"
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr "La parte no está designada como componente"
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr "Cantidad no proporcionada"
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr "Cantidad no válida"
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr "Se requiere al menos un artículo BOM"
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr "Verificación de Inventario"
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr "Inactivo"
@@ -7402,7 +7436,7 @@ msgstr "Variantes"
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr "Inventario"
@@ -7448,7 +7482,7 @@ msgstr "Editar"
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr "Última actualización"
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr "Método"
msgid "No author found"
msgstr "No se encontró autor"
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr "El complemento '{p}' no es compatible con la versión actual de InvenTree {v}"
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr "El complemento requiere al menos la versión {v}"
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr "El complemento requiere como máximo la versión {v}"
@@ -8361,7 +8395,7 @@ msgstr "Total"
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr "Resultados de la Prueba"
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr "Prueba"
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr "Resultado"
@@ -8416,7 +8450,7 @@ msgstr "Elementos instalados"
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr "Serial"
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr "Fecha de Expiración"
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr "Ubicación externa"
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr "Desactualizado"
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr "Cantidad requerida"
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr "Debe suministrarse una parte válida"
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr "Seleccionar Propietario"
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr "Externo"
@@ -8591,7 +8625,7 @@ msgstr "Externo"
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr "Seleccione una parte del proveedor correspondiente para este artículo d
msgid "Where is this stock item located?"
msgstr "¿Dónde se encuentra este artículo de stock?"
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr "Empaquetar este artículo de stock se almacena en"
@@ -8665,7 +8699,7 @@ msgstr "¿Está este artículo instalado en otro artículo?"
msgid "Serial number for this item"
msgstr "Número de serie para este artículo"
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr "Código de lote para este artículo de stock"
@@ -8742,249 +8776,257 @@ msgstr "Los números de serie deben ser una lista de enteros"
msgid "Quantity does not match serial numbers"
msgstr "La cantidad no coincide con los números de serie"
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr "Números de serie ya existen"
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr "Artículo de stock ha sido asignado a un pedido de venta"
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr "Artículo de stock está instalado en otro artículo"
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr "Artículo de stock contiene otros artículos"
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr "Artículo de stock ha sido asignado a un cliente"
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr "El artículo de stock está en producción"
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr "Stock serializado no puede ser combinado"
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr "Artículos de Stock Duplicados"
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr "Los artículos de stock deben referirse a la misma parte"
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr "Los artículos de stock deben referirse a la misma parte del proveedor"
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr "Los códigos de estado del stock deben coincidir"
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Stock no se puede mover porque no está en stock"
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr "Notas de entrada"
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr "Debe proporcionarse un valor para esta prueba"
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr "El archivo adjunto debe ser subido para esta prueba"
-#: stock/models.py:2344
-msgid "Test name"
-msgstr "Nombre del test"
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr "Resultado de la prueba"
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr "Valor de salida de prueba"
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr "Adjunto de resultados de prueba"
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr "Notas de prueba"
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr "El número de serie es demasiado grande"
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr "Introduzca el número de artículos de stock para serializar"
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr "La cantidad no debe exceder la cantidad disponible de stock ({q})"
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr "Introduzca números de serie para nuevos artículos"
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr "Ubicación de stock de destino"
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr "Campo de nota opcional"
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr "Los números de serie no se pueden asignar a esta parte"
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr "Añadir nota de transacción (opcional)"
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr "La parte debe ser vendible"
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr "El artículo está asignado a una orden de venta"
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr "El artículo está asignado a una orden de creación"
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr "Cliente para asignar artículos de stock"
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr "La empresa seleccionada no es un cliente"
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr "Notas de asignación de stock"
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr "Debe proporcionarse una lista de artículos de stock"
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr "Notas de fusión de stock"
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr "Permitir proveedores no coincidentes"
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr "Permitir fusionar artículos de stock con diferentes partes de proveedor"
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr "Permitir estado no coincidente"
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr "Permitir fusionar artículos de stock con diferentes códigos de estado"
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr "Debe proporcionar al menos dos artículos de stock"
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr "Valor de clave primaria de Stock"
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr "Notas de transacción de stock"
@@ -9009,7 +9051,7 @@ msgstr "Datos de Prueba"
msgid "Test Report"
msgstr "Informe de Prueba"
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr "Eliminar Datos de Prueba"
@@ -9025,15 +9067,15 @@ msgstr "Notas del artículo de stock"
msgid "Installed Stock Items"
msgstr "Elementos de Stock instalados"
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr "Instalar artículo de stock"
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr "Acciones de ajuste de stock"
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr "Contar stock"
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr "Añadir stock"
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr "Eliminar stock"
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr "Serializar stock"
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr "Transferir stock"
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr "Asignar a cliente"
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr "Ningún inventario realizado"
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr "Nueva Ubicación"
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr "Página de Inicio"
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr "Confirmar Email"
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr "Confirme que %(email)s es una dirección de correo electrónico para el usuario %(user_display)s."
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "Confirmar"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr "Haga clic en el siguiente enlace para ver esta parte"
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr "Cantidad Mínima"
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr "Existen errores en el formulario"
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr "Ingresar consulta de búsqueda"
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/es_MX/LC_MESSAGES/django.po b/InvenTree/locale/es_MX/LC_MESSAGES/django.po
index 21f40562acc2..942c2c672d7b 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: 2024-02-15 00:38+0000\n"
+"POT-Creation-Date: 2024-02-16 07:34+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -397,7 +397,7 @@ msgstr ""
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2924 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -428,9 +428,9 @@ msgstr ""
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2400
+#: common/models.py:2401 common/models.py:2625 common/models.py:2626
+#: common/models.py:2871 common/models.py:2872 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
@@ -475,7 +475,7 @@ msgstr ""
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2612 common/models.py:3010
#: common/serializers.py:370 company/models.py:605 label/models.py:115
#: machine/models.py:24 part/models.py:850 part/models.py:3587
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
@@ -1084,7 +1084,7 @@ msgstr ""
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:3207
msgid "Part"
msgstr ""
@@ -1276,7 +1276,7 @@ msgstr ""
#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/templates/build/detail.html:34 common/models.py:2422
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
#: part/forms.py:48 part/models.py:3147 part/models.py:3981
@@ -1434,7 +1434,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:336 stock/api.py:952
msgid "The following serial numbers already exist or are invalid"
msgstr ""
@@ -1651,7 +1651,7 @@ msgid "Allocate optional BOM items to build order"
msgstr ""
#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: stock/api.py:719
msgid "BOM Item"
msgstr ""
@@ -2144,1340 +2144,1340 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr ""
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr ""
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
+#: common/models.py:1448 part/admin.py:108 part/models.py:3743
#: report/models.py:180 templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:430 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr ""
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr ""
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr ""
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr ""
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1992 common/models.py:2392
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2033
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2035
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2041
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2042
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2047
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2048
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2053
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2054
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2059
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2060
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2065
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2066
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2071
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2072
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2077
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2078
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2083
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2084
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2089
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2090
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2095
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2096
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2101
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2102
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2107
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2108
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2113
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2114
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2119
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2120
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2125
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2126
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2131
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2132
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2137
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2138
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2143
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2144
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2149
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2151
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2157
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2159
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2165
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2167
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2173
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2174
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2179
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2180
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2185
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2186
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2191
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2192
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2197
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2198
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2203
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2204
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2209
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2211
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2217
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2218
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2223
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2224
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2229
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2230
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2235
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2236
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2241
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2243
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2249
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2250
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2255
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2257
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2263
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2264
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2269
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2271
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2277
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2279
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2285
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2286
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2291
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2292
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2297
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2298
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2303
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2304
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2309
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2310
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2315
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2316
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2329 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2330
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2335 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2337
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2343
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2345
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2351
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2352
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2357
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2359
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2365
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2367
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2373
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2374
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2379
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2380
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2423
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2430 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3485,23 +3485,23 @@ msgstr ""
msgid "Price"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2431
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2602 common/models.py:2787
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2603
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2613
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2617 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3511,101 +3511,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2617
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2633 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2634
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2642
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2643
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2751
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2752
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2760
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2761
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2769
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2770
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2777
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2778
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2788
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2793
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2794
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2920
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2922 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2926 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2928 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2930 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2933
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2933
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2950 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3615,31 +3615,31 @@ msgstr ""
msgid "Image"
msgstr ""
-#: common/models.py:2938
+#: common/models.py:2950
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:2992
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3011
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3018 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3019
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3027
msgid "Unit definition"
msgstr ""
@@ -3850,7 +3850,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:735
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr ""
@@ -4677,48 +4677,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -6012,7 +6012,7 @@ msgstr ""
#: part/models.py:891 part/models.py:3371 part/models.py:3812
#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/templates/part/part_base.html:260 stock/api.py:707
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -7772,7 +7772,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8060,17 +8060,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8505,44 +8505,44 @@ msgstr ""
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:542 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:727
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:755
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:759
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:762 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:848
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:854
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:885
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:895
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:926
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -9010,7 +9010,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9026,15 +9026,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3242
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1667
msgid "Add Test Result"
msgstr ""
@@ -9836,7 +9836,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9947,7 +9947,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10295,7 +10295,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr ""
@@ -11249,7 +11249,7 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
msgid "Select"
@@ -11620,61 +11620,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -13023,7 +13023,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3270
msgid "Select Stock Items"
msgstr ""
@@ -13244,51 +13244,51 @@ msgstr ""
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3110 templates/js/translated/stock.js:3146
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3168
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3189
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3190
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3192
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3193
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3194
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3195
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3208
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3271
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3284
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3288
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/fa/LC_MESSAGES/django.po b/InvenTree/locale/fa/LC_MESSAGES/django.po
index f49d3b57d01f..5652d368339e 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Persian\n"
"Language: fa_IR\n"
@@ -51,18 +51,18 @@ msgstr "جزئیات خطا را می توان در پنل مدیریت پیدا
msgid "Enter date"
msgstr "تاریخ را وارد کنید"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "تاریخ را وارد کنید"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "یادداشت"
@@ -127,42 +127,42 @@ msgstr "دامنه ایمیل ارائه شده تایید نشده است."
msgid "Registration is disabled."
msgstr ""
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr ""
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr ""
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr ""
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr ""
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr ""
@@ -386,7 +386,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr ""
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr ""
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr ""
@@ -474,9 +474,9 @@ msgstr ""
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr ""
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr ""
@@ -500,8 +500,8 @@ msgstr ""
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr ""
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr ""
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr ""
@@ -540,7 +540,7 @@ msgid "parent"
msgstr ""
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr ""
@@ -576,104 +576,104 @@ msgstr ""
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr ""
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr ""
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "فایلهای داده"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "فایل را برای بارگذاری انتخاب کنید"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "این نوع فایل پشتیبانی نمیشود"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "حجم فایل خیلی بزرگ است"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "هیچ ستونی در فایل یافت نشد"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "هیچ ردیف داده ای در فایل یافت نشد"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "هیچ ردیف داده ای ارائه نشده است"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "هیچ ستون داده ای ارائه نشده است"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "ستون مورد نیاز وجود ندارد: \"{name}\""
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "ستون تکراری: '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "آدرس فایل تصویری از راه دور"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr ""
@@ -813,7 +813,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr ""
@@ -833,7 +833,7 @@ msgstr ""
msgid "Build order output rejected"
msgstr ""
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr ""
@@ -933,14 +933,14 @@ msgstr ""
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr ""
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr ""
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr ""
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr ""
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr ""
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr ""
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr ""
@@ -1099,7 +1099,7 @@ msgstr "مرجع سفارش فروش"
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr ""
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr ""
@@ -1258,27 +1258,32 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr ""
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr ""
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr ""
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr ""
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr ""
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr ""
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr ""
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr ""
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr ""
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr ""
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr ""
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr ""
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr ""
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr ""
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr ""
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr ""
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr ""
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr ""
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr ""
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr ""
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr ""
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr ""
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr ""
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr ""
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
@@ -3953,7 +3967,7 @@ msgstr ""
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr ""
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr ""
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr ""
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr ""
msgid "Select supplier"
msgstr ""
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr ""
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr ""
@@ -4199,13 +4213,13 @@ msgstr ""
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr ""
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr ""
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr ""
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr ""
@@ -4809,7 +4823,7 @@ msgstr ""
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr ""
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr ""
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr ""
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr ""
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr ""
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -5919,7 +5937,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr ""
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr ""
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr ""
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr ""
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -7448,7 +7482,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr ""
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr ""
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "تایید"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/fi/LC_MESSAGES/django.po b/InvenTree/locale/fi/LC_MESSAGES/django.po
index 60d56429bf6d..4c455af9ffdf 100644
--- a/InvenTree/locale/fi/LC_MESSAGES/django.po
+++ b/InvenTree/locale/fi/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:42\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Finnish\n"
"Language: fi_FI\n"
@@ -51,18 +51,18 @@ msgstr "Virheen tiedot löytyvät hallintapaneelista"
msgid "Enter date"
msgstr "Anna päivämäärä"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Anna päivämäärä"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Merkinnät"
@@ -127,42 +127,42 @@ msgstr "Annetun sähköpostiosoitteen verkkotunnusta ei hyväksytä."
msgid "Registration is disabled."
msgstr ""
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Annettu määrä on virheellinen"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Tyhjä sarjanumero"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Duplikaatti sarjanumero"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr ""
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr ""
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Sarjanumeroita ei löytynyt"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr ""
@@ -386,7 +386,7 @@ msgstr "Puuttuva tiedosto"
msgid "Missing external link"
msgstr "Puuttuva ulkoinen linkki"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Liite"
msgid "Select file to attach"
msgstr "Valitse liitettävä tiedosto"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Kommentti"
msgid "File comment"
msgstr "Tiedoston kommentti"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Käyttäjä"
@@ -474,9 +474,9 @@ msgstr ""
msgid "Invalid choice"
msgstr "Virheellinen valinta"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Virheellinen valinta"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Nimi"
@@ -500,8 +500,8 @@ msgstr "Nimi"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Nimi"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Nimi"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Kuvaus"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr ""
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Polku"
@@ -576,104 +576,104 @@ msgstr "Palvelinvirhe"
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Täytyy olla kelvollinen luku"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Valuutta"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr "Valitse valuutta käytettävissä olevista vaihtoehdoista"
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Tiedostonimi"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Virheellinen arvo"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "Datatiedosto"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Valitse lähetettävä datatiedosto"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Tiedostotyyppiä ei tueta"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "Tiedosto on liian suuri"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Datarivejä ei annettu"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Datasarakkeita ei annettu"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Vaadittu sarake puuttuu: '{name}'"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Duplikaatti sarake: '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "Kuvatiedoston URL"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "Kuvien lataaminen ei ole käytössä"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr ""
@@ -813,7 +813,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr ""
@@ -833,7 +833,7 @@ msgstr ""
msgid "Build order output rejected"
msgstr ""
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr ""
@@ -933,14 +933,14 @@ msgstr "Tietoja InvenTree:stä"
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr ""
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr ""
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr "Saatavilla"
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr ""
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr ""
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr ""
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr ""
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Osa"
@@ -1099,7 +1099,7 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr ""
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr ""
@@ -1258,27 +1258,32 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr ""
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr ""
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr ""
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr ""
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "Määrä"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr ""
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "Varastotuote"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr ""
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr ""
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr ""
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "Sarjanumerot"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr ""
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr "Sijainti"
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "Tila"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr "Ei sallittu"
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr ""
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr ""
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr ""
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr ""
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr "Virheellinen verkkotunnus: {domain}"
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr "Uudelleenkäynnistys vaaditaan"
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr "Yrityksen nimi"
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr "Yrityksen sisäinen nimi"
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr "Oletusvaluutta"
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr "päivää"
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr "Automaattinen varmuuskopionti"
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr "Ota käyttöön tietokannan ja mediatiedostojen automaattinen varmuuskopiointi"
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr "Automaattisen varmuuskopioinnin aikaväli"
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Viivakoodituki"
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr "Komponentti"
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr "Ostettavissa"
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr ""
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr "Seurattavissa"
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr ""
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr "Sisäiset hinnat"
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr "Sisäisen hinnan ohitus"
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr "Sivun koko"
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr "Täytä sarjanumerot automaattisesti"
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr "Salli salasananpalautus"
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr "Salli rekisteröinti"
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr "Salli SSO"
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr "Salli SSO kirjautumissivuilla"
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr "Salli SSO rekisteröinti"
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr "Sähköposti vaaditaan"
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr "Sähköpostiosoite kahdesti"
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr "Salasana kahdesti"
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr "Sallitut verkkotunnukset"
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr "Pakota MFA"
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr "Näytä uutiset"
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr "Näytä uutiset kotisivulla"
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr "Hinta"
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr "Aktiivinen"
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr "Salaisuus"
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr "Isäntä"
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr "Otsikko"
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr "Julkaistu"
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Julkaisija"
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Yhteenveto"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr "Kuva"
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr "Kuvatiedosto"
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr "Yritys"
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
@@ -3953,7 +3967,7 @@ msgstr ""
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr "Valitse valmistaja"
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr ""
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr "Arvo"
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr "Toimittaja"
msgid "Select supplier"
msgstr "Valitse toimittaja"
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr "Toimittajan varastonimike"
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr "Muistiinpano"
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr ""
@@ -4199,13 +4213,13 @@ msgstr ""
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr "Asiakas"
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr ""
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr ""
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr "QR-koodi"
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr ""
@@ -4809,7 +4823,7 @@ msgstr ""
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr "Vastaanotettu"
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr ""
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr ""
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr ""
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr ""
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -5919,7 +5937,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr ""
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr "Päivämäärä"
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr ""
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr ""
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr "Valmistajan osanumero"
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr "Luo raportti"
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -7448,7 +7482,7 @@ msgstr "Muokkaa"
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr "Sarjanumero"
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr "Uusi sijainti"
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr "Vahvista sähköpostiosoite"
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "Vahvista"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po
index a2b1660891b0..c918dfd768b1 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:42\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:24\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@@ -51,18 +51,18 @@ msgstr "Les détails de l'erreur peuvent être trouvées dans le panneau d'admin
msgid "Enter date"
msgstr "Entrer la date"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Entrer la date"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Notes"
@@ -127,42 +127,42 @@ msgstr "Le domaine e-mail fourni n'est pas approuvé."
msgid "Registration is disabled."
msgstr "L'enregistrement est désactivé."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Quantité fournie invalide"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Chaîne de numéro de série vide"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Numéro de série en doublon"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr "Plage de groupe non valide : {group}"
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "La plage de groupe {group} dépasse la quantité autorisée ({expected_quantity})"
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr "Séquence de groupe invalide : {group}"
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Aucun numéro de série trouvé"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Le nombre de numéros de série uniques ({len(serials)}) doit correspondre à la quantité ({expected_quantity})"
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Retirer les balises HTML de cette valeur"
@@ -386,7 +386,7 @@ msgstr "Fichier manquant"
msgid "Missing external link"
msgstr "Lien externe manquant"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Pièce jointe"
msgid "Select file to attach"
msgstr "Sélectionnez un fichier à joindre"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Commentaire"
msgid "File comment"
msgstr "Commentaire du fichier"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Utilisateur"
@@ -474,9 +474,9 @@ msgstr "Les noms dupliqués ne peuvent pas exister sous le même parent"
msgid "Invalid choice"
msgstr "Choix invalide"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Choix invalide"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Nom"
@@ -500,8 +500,8 @@ msgstr "Nom"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Nom"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Nom"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Description"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "parent"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Chemin d'accès"
@@ -576,104 +576,104 @@ msgstr "Erreur serveur"
msgid "An error has been logged by the server."
msgstr "Une erreur a été loguée par le serveur."
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Doit être un nombre valide"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Devise"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr "Sélectionnez la devise à partir des options disponibles"
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr "Vous n'avez pas la permission de modifier ce rôle utilisateur."
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr "Seuls les super-utilisateurs peuvent créer de nouveaux utilisateurs"
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Nom du fichier"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Valeur non valide"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "Fichier de données"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Sélectionnez le fichier de données à envoyer"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Format de fichier non supporté"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "Fichier trop volumineux"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "Pas de colonnes trouvées dans le fichier"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "Par de lignes de données trouvées dans le fichier"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Pas de lignes de données fournies"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Pas de colonne de données fournie"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Colonne requise manquante : {name}"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Colonne duliquée : '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr "Images distantes"
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "URL du fichier image distant"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "Le téléchargement des images depuis une URL distante n'est pas activé"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Échec de la vérification du processus d'arrière-plan"
@@ -813,7 +813,7 @@ msgstr "Séparer de l'élément parent"
msgid "Split child item"
msgstr "Fractionner l'élément enfant"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Articles de stock fusionnés"
@@ -833,7 +833,7 @@ msgstr "Sortie de l'ordre de construction terminée"
msgid "Build order output rejected"
msgstr "La sortie de l'ordre de construction a été refusée"
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr "Consommé par ordre de construction"
@@ -933,14 +933,14 @@ msgstr "À propos d'InvenTree"
msgid "Build must be cancelled before it can be deleted"
msgstr "La construction doit être annulée avant de pouvoir être supprimée"
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr "Consommable"
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr "Allouée"
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr "Disponible"
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Ordre de Fabrication"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "Référence de l' Ordre de Fabrication"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "BuildOrder associé a cette fabrication"
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "BuildOrder associé a cette fabrication"
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "BuildOrder associé a cette fabrication"
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Pièce"
@@ -1099,7 +1099,7 @@ msgstr "Bon de commande de référence"
msgid "SalesOrder to which this build is allocated"
msgstr "Commande de vente à laquelle cette construction est allouée"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "État de la construction"
msgid "Build status code"
msgstr "Code de statut de construction"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "Code de lot"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "Code de lot pour ce build output"
@@ -1258,27 +1258,32 @@ 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:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr "La quantité doit être supérieure à zéro"
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr "La quantité ne peut pas être supérieure à la quantité de sortie"
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr "Création de l'objet"
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr "Création de l'objet"
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr "Création de l'objet"
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr "Création de l'objet"
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "Quantité"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr "Quantité requise pour la commande de construction"
-#: build/models.py:1373
+#: build/models.py:1378
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:1382
+#: build/models.py:1387
#, 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:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr "L'article de stock est suralloué"
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr "La quantité allouée doit être supérieure à zéro"
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr "La quantité doit être de 1 pour stock sérialisé"
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr "L'article de stock sélectionné ne correspond pas à la ligne BOM"
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr "L'article de stock sélectionné ne correspond pas à la ligne BOM"
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "Article en stock"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr "Stock d'origine de l'article"
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr "Quantité de stock à allouer à la construction"
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr "Installer dans"
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr "Stock de destination de l'article"
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr "Sortie d'assemblage"
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr "L'ordre de production ne correspond pas à l'ordre parent"
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr "La pièce en sortie ne correspond pas à la pièce de l'ordre de construction"
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr "Cet ordre de production a déjà été produit"
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr "Cet ordre de production n'est pas complètement attribué"
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr "Entrer la quantité désiré pour la fabrication"
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr "Quantité entière requise pour les pièces à suivre"
-#: build/serializers.py:271
+#: build/serializers.py:272
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:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "Numéros de série"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr "Entrer les numéros de séries pour la fabrication"
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr "Allouer automatiquement les numéros de série"
-#: build/serializers.py:301
+#: build/serializers.py:302
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:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr "Les numéros de série suivants existent déjà, ou sont invalides"
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr "Une liste d'ordre de production doit être fourni"
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr "Une liste d'ordre de production doit être fourni"
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr "Emplacement"
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr "Emplacement du stock pour les sorties épuisées"
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr "Ignorer les allocations"
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr "Abandonner les allocations de stock pour les sorties abandonnées"
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr "Motif de l'élimination des produits de construction(s)"
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr "Emplacement des ordres de production achevés"
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "État"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr "Accepter l'allocation incomplète"
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr "Compléter les sorties si le stock n'a pas été entièrement alloué"
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr "Supprimer le stock alloué"
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr "Soustraire tout stock qui a déjà été alloué à cette construction"
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr "Retirer les sorties incomplètes"
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr "Supprimer toutes les sorties de construction qui n'ont pas été complétées"
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr "Non permis"
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr "Accepter comme consommé par cet ordre de construction"
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr "Désaffecter avant de terminer cette commande de fabrication"
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr "Stock suralloué"
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr "Comment voulez-vous gérer les articles en stock supplémentaires assignés à l'ordre de construction"
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr "Certains articles de stock ont été suralloués"
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr "Accepter les non-alloués"
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr "Accepter les articles de stock qui n'ont pas été complètement alloués à cette ordre de production"
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr "Le stock requis n'a pas encore été totalement alloué"
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr "Accepter les incomplèts"
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr "Accepter que tous les ordres de production n'aient pas encore été achevés"
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr "La quantité nécessaire n'a pas encore été complétée"
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr "L'ordre de production a des sorties incomplètes"
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr "Chaîne d'assemblage"
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr "Sortie d'assemblage"
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr "La sortie de la construction doit pointer vers la même construction"
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr "Élément de la ligne de construction"
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr "bom_item.part doit pointer sur la même pièce que l'ordre de construction"
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr "L'article doit être en stock"
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Quantité disponible ({q}) dépassée"
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr "La sortie de construction doit être spécifiée pour l'allocation des pièces suivies"
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr "La sortie de la construction ne peut pas être spécifiée pour l'allocation des pièces non suivies"
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr "Les articles d'allocation doivent être fournis"
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Emplacement de stock où les pièces doivent être fournies (laissez vide pour les prendre à partir de n'importe quel emplacement)"
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr "Emplacements exclus"
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr "Exclure les articles de stock de cet emplacement sélectionné"
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr "Stock interchangeable"
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Les articles de stock à plusieurs emplacements peuvent être utilisés de manière interchangeable"
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr "Stock de substitution"
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr "Autoriser l'allocation de pièces de remplacement"
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr "Objets Optionnels"
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr "Affecter des éléments de nomenclature facultatifs à l'ordre de fabrication"
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr "Article du BOM"
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr "En Commande"
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr "Sorties de Construction terminées"
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr "Commandes"
@@ -1908,10 +1913,10 @@ msgstr "Pièces allouées"
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr "Nom de domaine invalide : {domain}"
msgid "No plugin"
msgstr "Pas de plugin"
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr "Redémarrage nécessaire"
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr "Un paramètre a été modifié, ce qui nécessite un redémarrage du serveur"
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr "Migration en attente"
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr "Nombre de migrations de base de données en attente"
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr "Nom de l'instance du serveur"
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr "Chaîne de caractères descriptive pour l'instance serveur"
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr "Utiliser le nom de l'instance"
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr "Utiliser le nom de l’instance dans la barre de titre"
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr "Limiter l'affichage de `about`"
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr "Afficher la modale `about` uniquement aux super-utilisateurs"
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr "Nom de la société"
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr "Nom de société interne"
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr "URL de base"
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr "URL de base pour l'instance serveur"
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr "Devise par défaut"
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr "Sélectionnez la devise de base pour les calculs de prix"
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr "Intervalle de mise à jour des devises"
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr "Fréquence de mise à jour des taux de change (définir à zéro pour désactiver)"
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr "jours"
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr "Plugin de mise à jour de devise"
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr "Plugin de mise à jour des devises à utiliser"
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr "Télécharger depuis l'URL"
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr "Autoriser le téléchargement d'images distantes et de fichiers à partir d'URLs externes"
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr "Limite du volume de téléchargement"
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr "Taille maximale autorisée pour le téléchargement de l'image distante"
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr "Agent utilisateur utilisé pour télécharger depuis l'URL"
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr "Permettre de remplacer l'agent utilisateur utilisé pour télécharger des images et des fichiers à partir d'URL externe (laisser vide pour la valeur par défaut)"
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr "Validation stricte d'URL"
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr "Spécification du schéma nécessaire lors de la validation des URL"
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr "Confirmation requise"
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr "Exiger une confirmation explicite de l’utilisateur pour certaines actions."
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr "Profondeur de l'arborescence"
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr "Profondeur de l'arborescence par défaut. Les niveaux plus profonds peuvent être chargés au fur et à mesure qu'ils sont nécessaires."
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr "Intervalle de vérification des mises à jour"
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr "À quelle fréquence vérifier les mises à jour (définir à zéro pour désactiver)"
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr "Backup automatique"
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr "Activer le backup automatique de la base de données et des fichiers médias"
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr "Intervalle de sauvegarde automatique"
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr "Spécifiez le nombre de jours entre les sauvegardes automatique"
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr "Intervalle de suppression des tâches"
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr "Les résultats de la tâche en arrière-plan seront supprimés après le nombre de jours spécifié"
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr "Intervalle de suppression du journal d'erreur"
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr "Les logs d'erreur seront supprimés après le nombre de jours spécifié"
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr "Intervalle de suppression du journal de notification"
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr "Les notifications de l'utilisateur seront supprimées après le nombre de jours spécifié"
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Support des code-barres"
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr "Activer le support du scanner de codes-barres dans l'interface web"
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr "Délai d'entrée du code-barres"
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr "Délai de traitement du code-barres"
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr "Prise en charge de la webcam code-barres"
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr "Autoriser la numérisation de codes-barres via la webcam dans le navigateur"
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr "Modifications de la pièce"
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr "Activer le champ de modification de la pièce"
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr "Regex IPN"
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr "Expression régulière pour la correspondance avec l'IPN de la Pièce"
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr "Autoriser les IPN dupliqués"
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr "Permettre à plusieurs pièces de partager le même IPN"
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr "Autoriser l'édition de l'IPN"
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr "Permettre de modifier la valeur de l'IPN lors de l'édition d'une pièce"
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr "Copier les données de la pièce"
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr "Copier les données des paramètres par défaut lors de la duplication d'une pièce"
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr "Copier les données des paramètres de la pièce"
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr "Copier les données des paramètres par défaut lors de la duplication d'une pièce"
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr "Copier les données de test de la pièce"
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr "Copier les données de test par défaut lors de la duplication d'une pièce"
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr "Copier les templates de paramètres de catégorie"
-#: common/models.py:1431
+#: common/models.py:1443
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:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr "Modèle"
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr "Les pièces sont des templates par défaut"
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr "Assemblage"
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr "Les pièces peuvent être assemblées à partir d'autres composants par défaut"
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr "Composant"
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr "Les pièces peuvent être utilisées comme sous-composants par défaut"
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr "Achetable"
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr "Les pièces sont achetables par défaut"
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr "Vendable"
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr "Les pièces sont vendables par défaut"
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr "Traçable"
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr "Les pièces sont traçables par défaut"
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr "Virtuelle"
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr "Les pièces sont virtuelles par défaut"
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr "Afficher l'import dans les vues"
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr "Afficher l'assistant d'importation pour certaine vues de produits"
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr "Afficher les pièces connexes"
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr "Afficher les pièces connexes à une pièce"
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr "Stock initial"
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr "Permettre la création d'un stock initial lors de l'ajout d'une nouvelle pièce"
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr "Données initiales du fournisseur"
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr "Permettre la création des données initiales du fournisseur lors de l'ajout d'une nouvelle pièce"
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr "Format d'affichage du nom de la pièce"
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr "Format pour afficher le nom de la pièce"
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr "Icône de catégorie par défaut"
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr "Icône par défaut de la catégorie de la pièce (vide signifie aucune icône)"
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr "Renforcer les unités des paramètres"
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr "Utiliser le prix fournisseur"
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr "Inclure les réductions de prix dans le calcul du prix global"
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr "Remplacer l'historique des achats"
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr "La tarification historique des bons de commande remplace les réductions de prix des fournisseurs"
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr "Utiliser les prix des articles en stock"
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr "Utiliser les prix des données de stock saisies manuellement pour calculer les prix"
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr "Âge de tarification des articles de stock"
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr "Exclure les articles en stock datant de plus de ce nombre de jours des calculs de prix"
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr "Utiliser les prix variants"
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr "Inclure la tarification variante dans le calcul global des prix"
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr "Variantes actives uniquement"
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr "N'utiliser que des pièces de variante actives pour calculer le prix de la variante"
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr "Intervalle de regénération des prix"
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr "Nombre de jours avant la mise à jour automatique du prix de la pièce"
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr "Prix internes"
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr "Activer les prix internes pour les pièces"
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr "Substitution du prix interne"
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr "Si disponible, les prix internes remplacent les calculs de la fourchette de prix"
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr "Activer l'impression d'étiquettes"
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr "Activer l'impression d'étiquettes depuis l'interface Web"
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr "Étiquette image DPI"
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr "Résolution DPI lors de la génération de fichiers image pour fournir aux plugins d'impression d'étiquettes"
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr "Activer les rapports"
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr "Activer la génération de rapports"
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr "Mode Débogage"
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr "Générer des rapports en mode debug (sortie HTML)"
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr "Taille de la page"
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr "Taille de page par défaut pour les rapports PDF"
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr "Activer les rapports de test"
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr "Activer la génération de rapports de test"
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr "Joindre des rapports de test"
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr "Lors de l'impression d'un rapport de test, joignez une copie du rapport de test à l'article en stock associé"
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr "Numéro de Série Universellement Unique"
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr "Les numéros de série pour les articles en stock doivent être uniques au niveau global"
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr "Remplir automatiquement les Numéros de Série"
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr "Remplir automatiquement les numéros de série dans les formulaires"
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr "Supprimer le stock épuisé"
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr "Détermine le comportement par défaut lorsqu'un article de stock est épuisé"
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr "Modèle de code de lot"
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr "Modèle pour générer des codes par défaut pour les articles en stock"
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr "Expiration du stock"
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr "Activer la fonctionnalité d'expiration du stock"
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr "Vendre le stock expiré"
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr "Autoriser la vente de stock expiré"
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr "Délai de péremption du stock"
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr "Nombre de jours pendant lesquels les articles en stock sont considérés comme périmés avant d'expirer"
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr "Construction de stock expirée"
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr "Autoriser la construction avec un stock expiré"
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr "Contrôle de la propriété des stocks"
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr "Activer le contrôle de la propriété sur les emplacements de stock et les articles"
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr "Icône par défaut de l'emplacement du stock"
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr "Icône par défaut de l'emplacement du stock (vide signifie aucune icône)"
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr "Afficher les pièces en stock installées"
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr "Modèle de référence de commande de construction"
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr "Modèle requis pour générer le champ de référence de l'ordre de construction"
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr "Activer les retours de commandes"
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr "Activer la fonctionnalité de retour de commande dans l'interface utilisateur"
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr "Modèle de référence de retour de commande"
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr "Modèle requis pour générer le champ de référence du retour de commande"
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr "Modifier les retours de commandes terminées"
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr "Autoriser la modification des retours après leur enregistrement"
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr "Modèle de référence de bon de commande"
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr "Modèle requis pour générer le champ de référence du bon de commande"
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr "Expédition par défaut du bon de commande"
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr "Activer la création d'expédition par défaut avec les bons de commandes"
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr "Modifier les commandes de vente terminées"
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr "Autoriser la modification des commandes de vente après avoir été expédiées ou complétées"
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr "Modèle de référence de commande d'achat"
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr "Modèle requis pour générer le champ de référence de bon de commande"
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr "Modifier les bons de commande terminés"
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr "Autoriser la modification des bons de commande après avoir été expédiés ou complétés"
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr "Activer les mots de passe oubliés"
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr "Activer la fonction \"Mot de passe oublié\" sur les pages de connexion"
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr "Activer les inscriptions"
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr "Activer l'auto-inscription pour les utilisateurs sur les pages de connexion"
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr "Activer le SSO"
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr "Activer le SSO sur les pages de connexion"
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr "Activer l'inscription SSO"
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr "Activer l'auto-inscription via SSO pour les utilisateurs sur les pages de connexion"
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr "Email requis"
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr "Exiger que l'utilisateur fournisse un mail lors de l'inscription"
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr "Saisie automatique des utilisateurs SSO"
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Remplir automatiquement les détails de l'utilisateur à partir des données de compte SSO"
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr "Courriel en double"
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr "Lors de l'inscription, demandez deux fois aux utilisateurs leur mail"
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr "Mot de passe deux fois"
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr "Lors de l'inscription, demandez deux fois aux utilisateurs leur mot de passe"
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr "Domaines autorisés"
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr "Grouper sur inscription"
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr "Groupe auquel les nouveaux utilisateurs sont assignés lors de l'inscription"
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr "Forcer l'authentification multifacteurs"
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr "Les utilisateurs doivent utiliser l'authentification multifacteurs."
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr "Vérifier les plugins au démarrage"
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr "Vérifier que tous les plugins sont installés au démarrage - activer dans les environnements conteneurs"
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr "Activer l'intégration d'URL"
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr "Autoriser les plugins à ajouter des chemins URL"
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr "Activer l'intégration de navigation"
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr "Activer les plugins à s'intégrer dans la navigation"
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr "Activer l'intégration de plugins"
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr "Activer l'intégration de plugin pour ajouter des apps"
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr "Activer l'intégration du planning"
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr "Autoriser les plugins à éxécuter des tâches planifiées"
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr "Activer l'intégration des évènements"
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr "Autoriser les plugins à répondre aux évènements internes"
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr "Activer les codes projet"
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr "Fonctionnalité d'inventaire"
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr "Activer la fonctionnalité d'inventaire pour enregistrer les niveaux de stock et le calcul de la valeur du stock"
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr "Période de l'inventaire automatique"
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr "Nombre de jours entre l'enregistrement automatique des stocks (définir à zéro pour désactiver)"
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr "Les rapports d'inventaire seront supprimés après le nombre de jours spécifié"
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr "Clé du paramètre (doit être unique - insensible à la casse)"
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr "Afficher les composants suivis"
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr "Afficher les composants suivis sur l'écran d'accueil"
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr "Afficher les catégories suivies"
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr "Afficher les catégories de pièces suivies sur la page d'accueil"
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr "Afficher les dernières pièces"
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr "Afficher les derniers composants sur la page d'accueil"
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr "Afficher les listes de matériaux non validées"
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr "Afficher les listes de matériaux en attente de validation sur la page d'accueil"
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr "Afficher les dernières modifications du stock"
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr "Afficher les articles de stock récemment modifiés sur la page d'accueil"
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr "Afficher le stock faible"
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr "Afficher les articles en stock bas sur la page d'accueil"
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr "Afficher le stock épuisé"
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr "Afficher les stocks épuisés sur la page d'accueil"
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr "Afficher le stock nécessaire"
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr "Afficher les pièces en stock nécessaires pour les assemblages sur la page d'accueil"
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr "Afficher le stock expiré"
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr "Afficher les pièces en stock expirées sur la page d'accueil"
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr "Afficher le stock périmé"
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr "Afficher les articles de stock périmés sur la page d'accueil"
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr "Afficher les constructions en attente"
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr "Afficher les constructions en attente sur la page d'accueil"
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr "Afficher les constructions en retard"
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr "Afficher les constructions en retard sur la page d'accueil"
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr "Afficher les commandes en suspens"
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr "Afficher les commandes en suspens sur la page d'accueil"
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr "Afficher les commandes en retard"
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr "Afficher les commandes en retard sur la page d'accueil"
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr "Afficher les envois en suspens"
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr "Afficher les envois en suspens sur la page d'accueil"
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr "Afficher les envois en retard"
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr "Afficher les envois en retard sur la page d'accueil"
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr "Afficher les nouvelles"
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr "Afficher les nouvelles sur la page d'accueil"
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr "Affichage du libellé en ligne"
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr "Afficher les étiquettes PDF dans le navigateur, au lieu de les télécharger en tant que fichier"
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr "Imprimante d'étiquettes par défaut"
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr "Configurer quelle imprimante d'étiquette doit être sélectionnée par défaut"
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr "Affichage du rapport en ligne"
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr "Afficher les rapports PDF dans le navigateur, au lieu de les télécharger en tant que fichier"
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr "Rechercher de pièces"
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr "Afficher les pièces dans la fenêtre d'aperçu de la recherche"
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr "Afficher les pièces du fournisseur dans la fenêtre de prévisualisation de la recherche"
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr "Rechercher les pièces du fabricant"
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr "Afficher les pièces du fabricant dans la fenêtre de prévisualisation de recherche"
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr "Masquer les pièces inactives"
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr "Exclure les pièces inactives de la fenêtre de prévisualisation de recherche"
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr "Rechercher des catégories"
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr "Afficher les catégories de pièces dans la fenêtre de prévisualisation de recherche"
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr "Rechercher dans le stock"
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr "Afficher les pièces en stock dans la fenêtre d'aperçu de la recherche"
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr "Cacher les pièces indisponibles"
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr "Exclure les articles en stock qui ne sont pas disponibles de la fenêtre de prévisualisation de recherche"
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr "Chercher des Emplacements"
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr "Afficher les emplacements dans la fenêtre d'aperçu de la recherche"
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr "Rechercher les entreprises"
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr "Afficher les entreprises dans la fenêtre de prévisualisation de recherche"
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr "Rechercher les commandes de construction"
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr "Afficher les commandes de construction dans la fenêtre de prévisualisation de recherche"
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr "Rechercher des bons de commande"
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr "Afficher les bons de commande dans la fenêtre de prévisualisation de recherche"
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr "Exclure les bons de commande inactifs"
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr "Exclure les commandes d’achat inactives de la fenêtre de prévisualisation de recherche"
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr "Rechercher les bons de commande"
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr "Afficher les bons de commande dans la fenêtre de prévisualisation de la recherche"
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr "Exclure les bons de commande inactives"
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr "Exclure les bons de commande inactifs de la fenêtre de prévisualisation de recherche"
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr "Rechercher les commandes retournées"
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr "Résultats de l'aperçu de la recherche"
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr "Nombre de résultats à afficher dans chaque section de la fenêtre de prévisualisation de recherche"
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr "Recherche Regex"
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr "Afficher la quantité dans les formulaires"
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr "Afficher la quantité disponible dans certains formulaires"
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr "La touche Echap ferme les formulaires"
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr "Utilisez la touche Echap pour fermer les formulaires modaux"
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr "Barre de navigation fixe"
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr "La position de la barre de navigation est fixée en haut de l'écran"
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr "Format de date"
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr "Format préféré pour l'affichage des dates"
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Planification des pièces"
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr "Afficher les informations de planification des pièces"
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr "Inventaire des pièces"
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr "Longueur de la chaîne dans les Tableau"
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr "Prix"
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr "Actif"
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr "Ce webhook (lien de rappel HTTP) est-il actif"
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr "Jeton"
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr "Jeton d'accès"
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr "Confidentiel"
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr "ID message"
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr "Identifiant unique pour ce message"
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr "Hôte"
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr "Hôte à partir duquel ce message a été reçu"
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr "Entête"
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr "En-tête de ce message"
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr "Corps"
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr "Corps de ce message"
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr "Endpoint à partir duquel ce message a été reçu"
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr "Le travail sur ce message est-il terminé ?"
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr "Id"
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr "Titre"
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr "Publié"
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Auteur"
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Résumé"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr "Lu"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr "Cette nouvelle a-t-elle été lue ?"
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr "Cette nouvelle a-t-elle été lue ?"
msgid "Image"
msgstr "Image"
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr "Définition"
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr "Devise par défaut utilisée pour cette entreprise"
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr "Société"
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
@@ -3953,7 +3967,7 @@ msgstr ""
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr "Sélectionner un fabricant"
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr "Nom du paramètre"
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr "Valeur"
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr "Valeur du paramètre"
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr "La pièce du fabricant liée doit faire référence à la même pièce d
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr "Fournisseur"
msgid "Select supplier"
msgstr "Sélectionner un fournisseur"
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr "Unité de gestion des stocks des fournisseurs"
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr "Description de la pièce du fournisseur"
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr "Note"
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr "Frais minimums (par exemple frais de stock)"
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr "Conditionnement"
@@ -4199,13 +4213,13 @@ msgstr "Supprimer image"
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr "Client"
@@ -4463,7 +4477,7 @@ msgstr "Adresses"
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr "Pièce fournisseur"
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr "Aucune information de fournisseur disponible"
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr "Éléments en stock"
@@ -4676,48 +4690,48 @@ msgstr "QR Code"
msgid "QR code"
msgstr "QR code"
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr "Inconnu"
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr "Aucun bon de commande correspondant n'a été trouvé"
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr "Commande d’achat"
@@ -4809,7 +4823,7 @@ msgstr "Commande d’achat"
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr "Retour de commande"
@@ -5008,9 +5022,9 @@ msgstr "Reçu"
msgid "Number of items received"
msgstr "Nombre d'éléments reçus"
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr "Prix d'achat"
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr "Utilisateur qui a vérifié cet envoi"
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr "Envoi"
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr "ID de composant"
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr "Nom de l'article"
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr "IPN"
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr "Pièces"
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr "Prix Minimum"
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr "Prix Maximum"
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Catégorie de composant"
@@ -5919,7 +5937,7 @@ msgstr "Catégories de composants"
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr "Nom de l'article"
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr "Date"
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr "Nom de test"
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr "Requis"
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr "Valeur requise"
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr "Données"
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr "Valeur par Défaut"
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Surplus"
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr "Validée"
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr "Devise d'achat de l'item"
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr "Copier l'image"
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr "Copier les paramètres"
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr "Prise d'inventaire"
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr "Stock"
@@ -7448,7 +7482,7 @@ msgstr "Modifier"
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr "Résultat"
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr "Numéro de série"
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr "Sélectionner un propriétaire"
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr "Numéro de série pour cet article"
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr "Les numéros de série doivent être une liste de nombres entiers"
msgid "Quantity does not match serial numbers"
msgstr "La quantité ne correspond pas au nombre de numéros de série"
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr "Les numéros de série existent déjà"
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr "Entrez le nombre d'articles en stock à sérialiser"
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr "Entrez les numéros de série pour les nouveaux articles"
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr "Les numéros de série ne peuvent pas être assignés à cette pièce"
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr ""
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "Confirmer"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po
index 0a5f6615d0f2..4bb30d7f53ca 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:42\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Language: he_IL\n"
@@ -51,18 +51,18 @@ msgstr ""
msgid "Enter date"
msgstr "הזן תאריך סיום"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "הזן תאריך סיום"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr ""
@@ -127,42 +127,42 @@ msgstr ""
msgid "Registration is disabled."
msgstr ""
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr ""
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr ""
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr ""
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "מספרים סידוריים לא נמצאו"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr ""
@@ -386,7 +386,7 @@ msgstr "קובץ חסר"
msgid "Missing external link"
msgstr "חסר קישור חיצוני"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "קובץ מצורף"
msgid "Select file to attach"
msgstr "בחר קובץ לצירוף"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "הערה"
msgid "File comment"
msgstr "הערת קובץ"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "משתמש"
@@ -474,9 +474,9 @@ msgstr ""
msgid "Invalid choice"
msgstr "בחירה שגויה"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "בחירה שגויה"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "שם"
@@ -500,8 +500,8 @@ msgstr "שם"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "שם"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "שם"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "תיאור"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "מקור"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr ""
@@ -576,104 +576,104 @@ msgstr ""
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "המספר חייב להיות תקין"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr ""
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "שם קובץ"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr ""
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr ""
@@ -813,7 +813,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr ""
@@ -833,7 +833,7 @@ msgstr ""
msgid "Build order output rejected"
msgstr ""
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr ""
@@ -933,14 +933,14 @@ msgstr ""
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr ""
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr ""
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr ""
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr ""
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr ""
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr ""
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "רכיב"
@@ -1099,7 +1099,7 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr ""
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr ""
@@ -1258,27 +1258,32 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr ""
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr ""
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr ""
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr ""
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "כמות"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr ""
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr ""
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr ""
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr ""
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr ""
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "מספרים סידוריים"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr ""
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr ""
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr ""
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr ""
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr ""
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr ""
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr ""
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr ""
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr ""
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr ""
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr ""
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr ""
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr ""
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr ""
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr ""
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
@@ -3953,7 +3967,7 @@ msgstr ""
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr ""
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr ""
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr ""
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr ""
msgid "Select supplier"
msgstr ""
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr ""
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr ""
@@ -4199,13 +4213,13 @@ msgstr ""
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr ""
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr ""
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr ""
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr ""
@@ -4809,7 +4823,7 @@ msgstr ""
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr ""
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr ""
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr ""
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr ""
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr ""
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -5919,7 +5937,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr ""
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr ""
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr ""
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr ""
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -7448,7 +7482,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr ""
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr ""
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "אשר"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/hi/LC_MESSAGES/django.po b/InvenTree/locale/hi/LC_MESSAGES/django.po
index 94feed714e43..a45f08fcd89a 100644
--- a/InvenTree/locale/hi/LC_MESSAGES/django.po
+++ b/InvenTree/locale/hi/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Hindi\n"
"Language: hi_IN\n"
@@ -51,18 +51,18 @@ msgstr ""
msgid "Enter date"
msgstr "तारीख दर्ज करें"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "तारीख दर्ज करें"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr ""
@@ -127,42 +127,42 @@ msgstr ""
msgid "Registration is disabled."
msgstr ""
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr ""
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr ""
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr ""
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr ""
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr ""
@@ -386,7 +386,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr ""
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr ""
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr ""
@@ -474,9 +474,9 @@ msgstr ""
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr ""
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr ""
@@ -500,8 +500,8 @@ msgstr ""
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr ""
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr ""
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr ""
@@ -540,7 +540,7 @@ msgid "parent"
msgstr ""
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr ""
@@ -576,104 +576,104 @@ msgstr ""
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr ""
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr ""
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr ""
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr ""
@@ -813,7 +813,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr ""
@@ -833,7 +833,7 @@ msgstr ""
msgid "Build order output rejected"
msgstr ""
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr ""
@@ -933,14 +933,14 @@ msgstr ""
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr ""
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr ""
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr ""
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr ""
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr ""
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr ""
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr ""
@@ -1099,7 +1099,7 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr ""
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr ""
@@ -1258,27 +1258,32 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr ""
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr ""
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr ""
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr ""
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr ""
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr ""
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr ""
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr ""
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr ""
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr ""
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr ""
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr ""
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr ""
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr ""
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr ""
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr ""
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr ""
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr ""
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr ""
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr ""
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr ""
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr ""
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr ""
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr ""
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
@@ -3953,7 +3967,7 @@ msgstr ""
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr ""
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr ""
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr ""
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr ""
msgid "Select supplier"
msgstr ""
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr ""
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr ""
@@ -4199,13 +4213,13 @@ msgstr ""
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr ""
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr ""
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr ""
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr ""
@@ -4809,7 +4823,7 @@ msgstr ""
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr ""
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr ""
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr ""
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr ""
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr ""
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -5919,7 +5937,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr ""
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr ""
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr ""
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr ""
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -7448,7 +7482,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr ""
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr ""
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr ""
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/hu/LC_MESSAGES/django.po b/InvenTree/locale/hu/LC_MESSAGES/django.po
index 6a84d831778e..6b32d654a6f7 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:42\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"Language: hu_HU\n"
@@ -51,18 +51,18 @@ msgstr "A hiba részleteit megtalálod az admin panelen"
msgid "Enter date"
msgstr "Dátum megadása"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Dátum megadása"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Megjegyzések"
@@ -127,42 +127,42 @@ msgstr "A megadott email domain nincs jóváhagyva."
msgid "Registration is disabled."
msgstr "Regisztráció le van tiltva."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Nem megfelelő mennyiség"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Üres sorozatszám"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Duplikált sorozatszám"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr "Hibás tartomány: {group}"
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Csoport tartomány {group} több mint az engedélyezett ({expected_quantity})"
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr "Hibás csoport-sor: {group}"
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Nem található sorozatszám"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Az egyedi sorozatszámok számának ({len(serials)}) meg kell egyeznie a mennyiséggel ({expected_quantity})"
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "HTML tag-ek eltávolítása ebből az értékből"
@@ -386,7 +386,7 @@ msgstr "Hiányzó fájl"
msgid "Missing external link"
msgstr "Hiányzó külső link"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Melléklet"
msgid "Select file to attach"
msgstr "Válaszd ki a mellekelni kívánt fájlt"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Megjegyzés"
msgid "File comment"
msgstr "Leírás, bővebb infó"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Felhasználó"
@@ -474,9 +474,9 @@ msgstr "Duplikált nevek nem lehetnek ugyanazon szülő alatt"
msgid "Invalid choice"
msgstr "Érvénytelen választás"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Érvénytelen választás"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Név"
@@ -500,8 +500,8 @@ msgstr "Név"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Név"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Név"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Leírás"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "szülő"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Elérési út"
@@ -576,104 +576,104 @@ msgstr "Kiszolgálóhiba"
msgid "An error has been logged by the server."
msgstr "A kiszolgáló egy hibaüzenetet rögzített."
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Érvényes számnak kell lennie"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Pénznem"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr "Válassz pénznemet a lehetőségek közül"
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr "Önnek nincs joga változtatni ezen a felhasználói szerepkörön."
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr "Csak a superuser-ek hozhatnak létre felhasználókat"
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr "A fiókod sikeresen létrejött."
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr "Kérlek használd a jelszó visszállítás funkciót a belépéshez"
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr "Üdvözlet az InvenTree-ben"
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Fájlnév"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Érvénytelen érték"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "Adat fájl"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Fájl kiválasztása feltöltéshez"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Nem támogatott fájltípus"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "Fájl túl nagy"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "Nem találhatók oszlopok a fájlban"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "Nincsenek adatsorok a fájlban"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Nincs adatsor megadva"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Nincs adat oszlop megadva"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Szükséges oszlop hiányzik: '{name}'"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Duplikált oszlop: '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr "Távoli kép"
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "A távoli kép URL-je"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "Képek letöltése távoli URL-ről nem engedélyezett"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Háttér folyamat ellenőrzés sikertelen"
@@ -813,7 +813,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:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Összevont készlet tétel"
@@ -833,7 +833,7 @@ msgstr "Gyártási utasítás kimenete kész"
msgid "Build order output rejected"
msgstr "Gyártási utasítás kimenete elutasítva"
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr "Gyártásra felhasználva"
@@ -933,14 +933,14 @@ msgstr "Verzió információk"
msgid "Build must be cancelled before it can be deleted"
msgstr "A gyártást be kell fejezni a törlés előtt"
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr "Fogyóeszköz"
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr "Lefoglalva"
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr "Elérhető"
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Gyártási utasítás"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "Gyártási utasítás azonosító"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve"
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve"
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve"
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Alkatrész"
@@ -1099,7 +1099,7 @@ msgstr "Vevői rendelés azonosító"
msgid "SalesOrder to which this build is allocated"
msgstr "Vevői rendelés amihez ez a gyártás hozzá van rendelve"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "Gyártási állapot"
msgid "Build status code"
msgstr "Gyártás státusz kód"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "Batch kód"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "Batch kód a gyártás kimenetéhez"
@@ -1258,27 +1258,32 @@ 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:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr "Mennyiségnek nullánál többnek kell lennie"
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr "A mennyiség nem lehet több mint a gyártási mennyiség"
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr "Gyártás objektum"
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr "Gyártás objektum"
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr "Gyártás objektum"
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr "Gyártás objektum"
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "Mennyiség"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr "Gyártáshoz szükséges mennyiség"
-#: build/models.py:1373
+#: build/models.py:1378
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:1382
+#: build/models.py:1387
#, 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:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr "Készlet túlfoglalva"
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr "Lefoglalt mennyiségnek nullánál többnek kell lennie"
-#: build/models.py:1404
+#: build/models.py:1409
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:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr "A készlet tétel nem egyezik az alkatrészjegyzékkel"
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr "A készlet tétel nem egyezik az alkatrészjegyzékkel"
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "Készlet tétel"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr "Forrás készlet tétel"
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr "Készlet mennyiség amit foglaljunk a gyártáshoz"
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr "Beépítés ebbe"
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr "Cél készlet tétel"
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr "Gyártás kimenet"
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr "Gyártási kimenet nem egyezik a szülő gyártással"
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr "Kimeneti alkatrész nem egyezik a gyártási utasításban lévő alkatrésszel"
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr "Ez a gyártási kimenet már elkészült"
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr "Ez a gyártási kimenet nincs teljesen lefoglalva"
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr "Add meg a mennyiséget a gyártás kimenetéhez"
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr "Egész számú mennyiség szükséges az egyedi követésre kötelezett alkatrészeknél"
-#: build/serializers.py:271
+#: build/serializers.py:272
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:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "Sorozatszámok"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr "Add meg a sorozatszámokat a gyártás kimenetéhez"
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr "Sorozatszámok automatikus hozzárendelése"
-#: build/serializers.py:301
+#: build/serializers.py:302
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:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr "A következő sorozatszámok már léteznek vagy nem megfelelőek"
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr "A gyártási kimenetek listáját meg kell adni"
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,224 +1461,224 @@ msgstr "A gyártási kimenetek listáját meg kell adni"
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr "Hely"
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr "Selejtezet gyártási kimenetek helye"
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr "Foglalások törlése"
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr "Selejtezett kimenetek foglalásainak felszabadítása"
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr "Selejtezés oka"
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr "A kész gyártási kimenetek helye"
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "Állapot"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr "Hiányos foglalás elfogadása"
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr "Kimenetek befejezése akkor is ha a készlet nem\n"
"lett teljesen lefoglalva"
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr "Lefoglalt készlet levonása"
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr "Az összes lefoglalt tétel levonása a készletről"
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr "Befejezetlen kimenetek törlése"
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr "A nem befejezett gyártási kimenetek törlése"
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr "Nem engedélyezett"
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr "Gyártásban fel lett használva"
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr "Foglalás felszabadítása a készre jelentés előtt"
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr "Túlfoglalt készlet"
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr "Hogyan kezeljük az gyártáshoz rendelt egyéb készletet"
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr "Pár készlet tétel túl lett foglalva"
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr "Kiosztatlanok elfogadása"
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr "Fogadd el hogy a készlet tételek nincsenek teljesen lefoglalva ehhez a gyártási utastáshoz"
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr "A szükséges készlet nem lett teljesen lefoglalva"
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr "Befejezetlenek elfogadása"
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr "Fogadd el hogy a szükséges számú gyártási kimenet nem lett elérve"
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr "Szükséges gyártási mennyiség nem lett elérve"
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr "A gyártási utasítás befejezetlen kimeneteket tartalmaz"
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr "Gyártás sor"
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr "Gyártás kimenet"
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr "A gyártási kimenetnek ugyanarra a gyártásra kell mutatnia"
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr "Gyártás sor tétel"
-#: build/serializers.py:790
+#: build/serializers.py:802
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:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr "A tételnek kell legyen készlete"
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Rendelkezésre álló mennyiség ({q}) túllépve"
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr "Gyártási kimenetet meg kell adni a követésre kötelezett alkatrészek lefoglalásához"
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr "Gyártási kimenetet nem lehet megadni a követésre kötelezett alkatrészek lefoglalásához"
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr "A lefoglalandó tételeket meg kell adni"
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Készlet hely ahonnan az alkatrészek származnak (hagyd üresen ha bárhonnan)"
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr "Hely kizárása"
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr "Készlet tételek kizárása erről a kiválasztott helyről"
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr "Felcserélhető készlet"
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "A különböző helyeken lévő készlet egyenrangúan felhasználható"
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr "Készlet helyettesítés"
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr "Helyettesítő alkatrészek foglalásának engedélyezése"
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr "Opcionális tételek"
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr "Opcionális tételek lefoglalása a gyártáshoz"
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr "Alkatrészjegyzék tétel"
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr "Lefoglalt készlet"
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr "Rendelve"
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr "Gyártásban"
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1853,7 +1858,7 @@ msgstr "Befejezett kimenetek"
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr "Vevői rendelés"
@@ -1909,10 +1914,10 @@ msgstr "Lefoglalt alkatrészek"
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2144,1340 +2149,1349 @@ msgstr "Érvénytelen domain név: {domain}"
msgid "No plugin"
msgstr "Nincsen plugin"
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr "Újraindítás szükséges"
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr "Egy olyan beállítás megváltozott ami a kiszolgáló újraindítását igényli"
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr "Függőben levő migrációk"
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr "Függőben levő adatbázis migrációk"
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr "Kiszolgáló példány neve"
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr "String leíró a kiszolgáló példányhoz"
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr "Példány név használata"
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr "Példány név használata a címsorban"
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr "Verzió infók megjelenítésének tiltása"
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr "Verzió infók megjelenítése csak admin felhasználóknak"
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr "Cég neve"
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr "Belső cégnév"
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr "Kiindulási URL"
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr "Kiindulási URL a kiszolgáló példányhoz"
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr "Alapértelmezett pénznem"
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr "Válassz alap pénznemet az ár számításokhoz"
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr "Árfolyam frissítési gyakoriság"
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr "Milyen gyakran frissítse az árfolyamokat (nulla a kikapcsoláshoz)"
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr "nap"
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr "Árfolyam frissítő plugin"
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr "Kiválasztott árfolyam frissítő plugin"
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr "Letöltés URL-ről"
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr "Képek és fájlok letöltésének engedélyezése külső URL-ről"
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr "Letöltési méret korlát"
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr "Maximum megengedett letöltési mérete a távoli képeknek"
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr "Felhasznált User-agent az URL-ről letöltéshez"
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr "A külső URL-ről letöltéshez használt user-agent felülbírálásának engedélyezése (hagyd üresen az alapértelmezéshez)"
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr "Erős URL validáció"
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr "Sablon specifikáció igénylése az URL validálásnál"
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr "Megerősítés igénylése"
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr "Kérjen felhasználói megerősítést bizonyos műveletekhez"
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr "Fa mélység"
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr "Alapértelmezett mélység a fa nézetekben. A mélyebb szintek betöltődnek ha szükségesek."
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr "Frissítés keresés gyakorisága"
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr "Milyen gyakran ellenőrizze van-e új frissítés (0=soha)"
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr "Automatikus biztonsági mentés"
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr "Adatbázis és média fájlok automatikus biztonsági mentése"
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr "Automata biztonsági mentés gyakorisága"
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr "Hány naponta készüljön automatikus biztonsági mentés"
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr "Feladat törlési gyakoriság"
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr "Háttérfolyamat eredmények törlése megadott nap eltelte után"
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr "Hibanapló törlési gyakoriság"
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr "Hibanapló bejegyzések törlése megadott nap eltelte után"
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr "Értesítés törlési gyakoriság"
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr "Felhasználói értesítések törlése megadott nap eltelte után"
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Vonalkód támogatás"
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr "Vonalkód olvasó támogatás engedélyezése a web felületen"
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr "Vonalkód beadási késleltetés"
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr "Vonalkód beadáskor a feldolgozás késleltetési ideje"
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr "Webkamerás vonalkód olvasás"
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr "Webkamerás kódolvasás engedélyezése a böngészőből"
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr "Alkatrész változatok"
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr "Alkatrész változat vagy verziószám tulajdonság használata"
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr "IPN reguláris kifejezés"
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr "Reguláris kifejezés ami illeszkedik az alkatrész IPN-re"
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr "Többször is előforduló IPN engedélyezése"
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr "Azonos IPN használható legyen több alkatrészre is"
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr "IPN szerkesztésének engedélyezése"
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr "IPN megváltoztatásánsak engedélyezése az alkatrész szerkesztése közben"
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr "Alkatrészjegyzék adatok másolása"
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr "Alkatrész másoláskor az alkatrészjegyzék adatokat is másoljuk alapból"
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr "Alkatrész paraméterek másolása"
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr "Alkatrész másoláskor a paramétereket is másoljuk alapból"
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr "Alkatrész teszt adatok másolása"
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr "Alkatrész másoláskor a tesztek adatait is másoljuk alapból"
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr "Kategória paraméter sablonok másolása"
-#: common/models.py:1431
+#: common/models.py:1443
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:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr "Sablon"
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr "Alkatrészek alapból sablon alkatrészek legyenek"
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr "Gyártmány"
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr "Alkatrészeket alapból lehessen gyártani másik alkatrészekből"
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr "Összetevő"
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr "Alkatrészek alapból használhatók összetevőként más alkatrészekhez"
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr "Beszerezhető"
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr "Alkatrészek alapból beszerezhetők legyenek"
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr "Értékesíthető"
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr "Alkatrészek alapból eladhatók legyenek"
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr "Követésre kötelezett"
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr "Alkatrészek alapból követésre kötelezettek legyenek"
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr "Virtuális"
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr "Alkatrészek alapból virtuálisak legyenek"
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr "Importálás megjelenítése a nézetekben"
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr "Import segéd megjelenítése néhány alkatrész nézetben"
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr "Kapcsolódó alkatrészek megjelenítése"
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr "Alkatrész kapcsolódó alkatrészeinek megjelenítése"
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr "Kezdeti készlet adatok"
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr "Kezdeti készlet létrehozása új alkatrész felvételekor"
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr "Kezdeti beszállítói adatok"
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr "Kezdeti beszállítói adatok létrehozása új alkatrész felvételekor"
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr "Alkatrész név megjelenítés formátuma"
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr "Formátum az alkatrész név megjelenítéséhez"
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr "Alkatrész kategória alapértelmezett ikon"
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr "Alkatrész kategória alapértelmezett ikon (üres ha nincs)"
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr "Csak választható mértékegységek"
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr "A megadott mértékegység csak a beállított lehetőségekből legyen elfogadva"
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr "Áraknál használt tizedesjegyek min. száma"
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr "Tizedejegyek minimális száma az árak megjelenítésekor"
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr "Áraknál használt tizedesjegyek max. száma"
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr "Tizedejegyek maximális száma az árak megjelenítésekor"
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr "Beszállítói árazás használata"
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr "Beszállítói ársávok megjelenítése az általános árkalkulációkban"
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr "Beszerzési előzmények felülbírálása"
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr "Beszerzési árelőzmények felülírják a beszállítói ársávokat"
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr "Készlet tétel ár használata"
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr "A kézzel bevitt készlet tétel árak használata az árszámításokhoz"
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr "Készlet tétel ár kora"
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr "Az ennyi napnál régebbi készlet tételek kizárása az árszámításból"
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr "Alkatrészváltozat árak használata"
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr "Alkatrészváltozat árak megjelenítése az általános árkalkulációkban"
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr "Csak az aktív változatokat"
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr "Csak az aktív alkatrészváltozatok használata az árazásban"
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr "Árazás újraszámítás gyakoriság"
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr "Árak automatikus frissítése ennyi nap után"
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr "Belső árak"
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr "Alkatrészekhez belső ár engedélyezése"
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr "Belső ár felülbírálása"
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr "Ha elérhetőek az árkalkulációkban a belső árak lesznek alapul véve"
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr "Címke nyomtatás engedélyezése"
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr "Címke nyomtatás engedélyezése a web felületről"
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr "Címke kép DPI"
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr "Képek felbontása amik átadásra kerülnek címkenyomtató pluginoknak"
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr "Riportok engedélyezése"
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr "Riportok előállításának engedélyezése"
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr "Debug mód"
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr "Riportok előállítása HTML formátumban (hibakereséshez)"
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr "Lapméret"
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr "Alapértelmezett lapméret a PDF riportokhoz"
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr "Teszt riportok engedélyezése"
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr "Teszt riportok előállításának engedélyezése"
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr "Teszt riportok hozzáadása"
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr "Teszt riport nyomtatáskor egy másolat hozzáadása a készlet tételhez"
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr "Globálisan egyedi sorozatszámok"
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr "A sorozatszámoknak egyedinek kell lennie a teljes készletre vonatkozóan"
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr "Sorozatszámok automatikus kitöltése"
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr "Sorozatszámok automatikus kitöltése a formokon"
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr "Kimerült készlet törlése"
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr "Alapértelmezett művelet mikor a készlet tétel elfogy"
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr "Batch kód sablon"
-#: common/models.py:1678
+#: common/models.py:1690
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:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr "Készlet lejárata"
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr "Készlet lejárat kezelésének engedélyezése"
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr "Lejárt készlet értékesítése"
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr "Lejárt készlet értékesítésének engedélyezése"
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr "Álló készlet ideje"
-#: common/models.py:1697
+#: common/models.py:1709
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:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr "Lejárt készlet gyártása"
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr "Gyártás engedélyezése lejárt készletből"
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr "Készlet tulajdonosok kezelése"
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr "Tulajdonosok kezelésének engedélyezése a készlet helyekre és tételekre"
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr "Hely alapértelmezett ikon"
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr "Hely alapértelmezett ikon (üres ha nincs)"
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr "Beépített készlet megjelenítése"
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr "Beépített készlet tételek megjelenítése a készlet táblákban"
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr "Gyártási utasítás azonosító minta"
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr "Szükséges minta a gyártási utasítás azonosító mező előállításához"
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr "Visszavétel engedélyezése"
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr "Visszavételek engedélyezése a felületen"
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr "Visszavétel azonosító minta"
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr "Szükséges minta a visszavétel azonosító mező előállításához"
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr "Befejezett visszavétel szerkesztése"
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr "Visszavétel szerkesztésének engedélyezése befejezés után"
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr "Vevői rendelés azonosító minta"
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr "Szükséges minta a vevői rendelés azonosító mező előállításához"
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr "Vevői rendeléshez alapértelmezett szállítmány"
-#: common/models.py:1766
+#: common/models.py:1778
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:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr "Befejezett vevői rendelés szerkesztése"
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr "Vevői rendelések szerkesztésének engedélyezése szállítás vagy befejezés után"
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr "Beszerzési rendelés azonosító minta"
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr "Szükséges minta a beszerzési rendelés azonosító mező előállításához"
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr "Befejezett beszerzési rendelés szerkesztése"
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr "Beszérzési rendelések szerkesztésének engedélyezése kiküldés vagy befejezés után"
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr "Beszerzési rendelések automatikus befejezése"
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr "A beszerzési rendelés automatikus befejezése ha minden sortétel beérkezett"
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr "Elfelejtett jelszó engedélyezése"
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr "Elfelejtett jelszó funkció engedélyezése a bejentkező oldalon"
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr "Regisztráció engedélyezése"
-#: common/models.py:1811
+#: common/models.py:1823
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:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr "SSO engedélyezése"
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr "SSO engedélyezése a bejelentkező oldalon"
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr "SSO regisztráció engedélyezése"
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr "Felhaszálók önkéntes regisztrációjának engedélyezése SSO-n keresztül a bejelentkező oldalon"
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr "Email szükséges"
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr "Kötelező email megadás regisztrációkor"
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr "SSO felhasználók automatikus kitöltése"
-#: common/models.py:1838
+#: common/models.py:1850
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:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr "Email kétszer"
-#: common/models.py:1845
+#: common/models.py:1857
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:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr "Jelszó kétszer"
-#: common/models.py:1851
+#: common/models.py:1863
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:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr "Engedélyezett domainek"
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr "Feliratkozás korlátozása megadott domain-ekre (vesszővel elválasztva, @-al kezdve)"
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr "Csoport regisztráláskor"
-#: common/models.py:1865
+#: common/models.py:1877
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:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr "Többfaktoros hitelesítés kényszerítése"
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr "A felhasználóknak többfaktoros hitelesítést kell használniuk."
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr "Pluginok ellenőrzése indításkor"
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr "Ellenőrizze induláskor hogy minden plugin telepítve van - engedélyezd konténer környezetben (docker)"
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr "Plugin frissítések ellenőrzése"
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr "Frissítések periódikus ellenőrzésének engedélyezése a telepített pluginokra"
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr "URL integráció engedélyezése"
-#: common/models.py:1894
+#: common/models.py:1906
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:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr "Navigációs integráció engedélyezése"
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr "Navigációs integráció engedélyezése a pluginok számára"
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr "App integráció engedélyezése"
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr "App hozzáadásának engedélyezése a pluginok számára"
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr "Ütemezés integráció engedélyezése"
-#: common/models.py:1915
+#: common/models.py:1927
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:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr "Esemény integráció engedélyezése"
-#: common/models.py:1922
+#: common/models.py:1934
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:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr "Projektszámok engedélyezése"
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr "Projektszámok használatának engedélyezése a projektek követéséhez"
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr "Leltár funkció"
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr "Leltár funkció engedélyezése a készlet mennyiség és érték számításhoz"
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr "Külső helyek nélkül"
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr "Külső helyek figyelmen kívül hagyása a leltár számításoknál"
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr "Automatikus leltár időpontja"
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr "Hány naponta történjen automatikus leltár (nulla egyenlő tiltva)"
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr "Riport törlési gyakoriság"
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr "Régi leltár riportok törlése hány naponta történjen"
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr "Felhasználók teljes nevének megjelenítése"
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr "Felhasználói név helyett a felhasználók teljes neve jelenik meg"
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
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:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr "Inaktív alkatrészek elrejtése"
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr "Nem aktív alkatrészek elrejtése a kezdőlapon"
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr "Értesítésre beállított alkatrészek megjelenítése"
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr "Alkatrész értesítések megjelenítése a főoldalon"
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr "Értesítésre beállított kategóriák megjelenítése"
-#: common/models.py:2036
+#: common/models.py:2056
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:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr "Legújabb alkatrészek megjelenítése"
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr "Legújabb alkatrészek megjelenítése a főoldalon"
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr "Jóváhagyás nélküli alkatrészjegyzékek megjelenítése"
-#: common/models.py:2048
+#: common/models.py:2068
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:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr "Legfrissebb készlet változások megjelenítése"
-#: common/models.py:2054
+#: common/models.py:2074
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:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr "Alacsony készlet megjelenítése"
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr "Alacsony készletek megjelenítése a főoldalon"
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr "Kimerült készlet megjelenítése"
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr "Kimerült készletek megjelenítése a főoldalon"
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr "Gyártáshoz szükséges készlet megjelenítése"
-#: common/models.py:2072
+#: common/models.py:2092
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:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr "Lejárt készlet megjelenítése"
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr "Lejárt készletek megjelenítése a főoldalon"
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr "Állott készlet megjelenítése"
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr "Álló készletek megjelenítése a főoldalon"
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr "Függő gyártások megjelenítése"
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr "Folyamatban lévő gyártások megjelenítése a főoldalon"
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr "Késésben lévő gyártások megjelenítése"
-#: common/models.py:2096
+#: common/models.py:2116
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:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr "Kintlévő beszerzési rendelések megjelenítése"
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr "Kintlévő beszerzési rendelések megjelenítése a főoldalon"
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr "Késésben lévő megrendelések megjelenítése"
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr "Késésben lévő megrendelések megjelenítése a főoldalon"
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr "Függő vevői rendelések megjelenítése"
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr "Függő vevői rendelések megjelenítése a főoldalon"
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr "Késésben lévő vevői rendelések megjelenítése"
-#: common/models.py:2120
+#: common/models.py:2140
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:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr "Függő vevői szállítmányok megjelenítése"
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr "Folyamatban lévő vevői szállítmányok megjelenítése a főoldalon"
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr "Hírek megjelenítése"
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr "Hírek megjelenítése a főoldalon"
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr "Beágyazott címke megjelenítés"
-#: common/models.py:2139
+#: common/models.py:2159
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:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr "Alapértelmezett címkenyomtató"
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr "Melyik címkenyomtató legyen az alapértelmezett"
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr "Beágyazott riport megjelenítés"
-#: common/models.py:2155
+#: common/models.py:2175
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:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr "Alkatrészek keresése"
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr "Alkatrészek megjelenítése a keresési előnézetben"
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr "Beszállítói alkatrészek keresése"
-#: common/models.py:2168
+#: common/models.py:2188
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:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr "Gyártói alkatrészek keresése"
-#: common/models.py:2174
+#: common/models.py:2194
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:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr "Inaktív alkatrészek elrejtése"
-#: common/models.py:2180
+#: common/models.py:2200
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:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr "Kategóriák keresése"
-#: common/models.py:2186
+#: common/models.py:2206
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:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr "Készlet keresése"
-#: common/models.py:2192
+#: common/models.py:2212
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:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr "Nem elérhető készlet tételek elrejtése"
-#: common/models.py:2199
+#: common/models.py:2219
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:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr "Helyek keresése"
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr "Készlet helyek megjelenítése a keresési előnézetben"
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr "Cégek keresése"
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr "Cégek megjelenítése a keresési előnézetben"
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr "Gyártási utasítások keresése"
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr "Gyártási utasítások megjelenítése a keresés előnézet ablakban"
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr "Beszerzési rendelések keresése"
-#: common/models.py:2224
+#: common/models.py:2244
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:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr "Inaktív beszerzési rendelések kihagyása"
-#: common/models.py:2231
+#: common/models.py:2251
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:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr "Vevői rendelések keresése"
-#: common/models.py:2238
+#: common/models.py:2258
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:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr "Inaktív vevői rendelések kihagyása"
-#: common/models.py:2245
+#: common/models.py:2265
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:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr "Visszavétel keresése"
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr "Visszavételek megjelenítése a keresés előnézet ablakban"
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr "Inaktív visszavételek kihagyása"
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr "Inaktív visszavételek kihagyása a keresési előnézet találataiból"
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr "Keresési előnézet eredményei"
-#: common/models.py:2267
+#: common/models.py:2287
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:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr "Regex keresés"
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr "Reguláris kifejezések engedélyezése a keresésekben"
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr "Teljes szó keresés"
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr "A keresések csak teljes szóra egyező találatokat adjanak"
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr "Mennyiség megjelenítése a formokon"
-#: common/models.py:2286
+#: common/models.py:2306
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:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr "ESC billentyű zárja be a formot"
-#: common/models.py:2292
+#: common/models.py:2312
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:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr "Rögzített menüsor"
-#: common/models.py:2298
+#: common/models.py:2318
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:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr "Dátum formátum"
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr "Preferált dátum formátum a dátumok kijelzésekor"
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Alkatrész ütemezés"
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr "Alkatrész ütemezési információk megjelenítése"
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr "Alkatrész leltár"
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr "Alkatrész leltár információk megjelenítése (ha a leltár funkció engedélyezett)"
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr "Táblázati szöveg hossz"
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr "Maximális szöveg hossz ami megjelenhet a táblázatokban"
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr "Alapértelmezett alkatrész címke sablon"
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr "Az alapértelmezetten kiválasztott alkatrész címke sablon"
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr "Alapértelmezett készlet címke sablon"
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr "Az alapértelmezetten kiválasztott készlet címke sablon"
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr "Alapértelmezett készlethely címke sablon"
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr "Az alapértelmezetten kiválasztott készlethely címke sablon"
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr "Hibariportok fogadása"
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr "Értesítések fogadása a rendszerhibákról"
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr "Ársáv mennyiség"
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3485,23 +3499,23 @@ msgstr "Ársáv mennyiség"
msgid "Price"
msgstr "Ár"
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr "Egységár egy meghatározott mennyiség esetén"
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr "Végpont"
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr "Végpont ahol ez a webhook érkezik"
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr "Webhook neve"
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3511,101 +3525,101 @@ msgstr "Webhook neve"
msgid "Active"
msgstr "Aktív"
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr "Aktív-e ez a webhook"
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr "Token"
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr "Token a hozzáféréshez"
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr "Titok"
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr "Megosztott titok a HMAC-hoz"
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr "Üzenet azonosító"
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr "Egyedi azonosító ehhez az üzenethez"
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr "Kiszolgáló"
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr "Kiszolgáló ahonnan ez az üzenet érkezett"
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr "Fejléc"
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr "Üzenet fejléce"
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr "Törzs"
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr "Üzenet törzse"
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr "Végpont amin ez az üzenet érkezett"
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr "Dolgozott rajta"
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr "Befejeződött a munka ezzel az üzenettel?"
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr "Id"
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr "Cím"
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr "Közzétéve"
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Szerző"
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Összefoglaló"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr "Elolvasva"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr "Elolvasva?"
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3615,31 +3629,31 @@ msgstr "Elolvasva?"
msgid "Image"
msgstr "Kép"
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr "Képfájl"
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr "A mértékegységnek valós azonosítónak kell lennie"
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr "Egység neve"
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr "Szimbólum"
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr "Opcionális mértékegység szimbólum"
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr "Definíció"
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr "Mértékegység definíció"
@@ -3850,7 +3864,7 @@ msgstr "Cég által használt alapértelmezett pénznem"
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr "Cég"
@@ -3943,7 +3957,7 @@ msgid "Link to address information (external)"
msgstr "Link a címinformációkhoz (külső)"
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Kiindulási alkatrész"
@@ -3954,7 +3968,7 @@ msgstr "Válassz alkatrészt"
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3969,7 +3983,7 @@ msgid "Select manufacturer"
msgstr "Gyártó kiválasztása"
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4004,9 +4018,9 @@ msgstr "Paraméter neve"
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr "Érték"
@@ -4015,7 +4029,7 @@ msgid "Parameter value"
msgstr "Paraméter értéke"
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4041,7 +4055,7 @@ msgstr "Kapcsolódó gyártói alkatrésznek ugyanarra a kiindulási alkatrészr
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4058,7 +4072,7 @@ msgstr "Beszállító"
msgid "Select supplier"
msgstr "Beszállító kiválasztása"
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr "Beszállítói cikkszám"
@@ -4075,13 +4089,13 @@ msgid "Supplier part description"
msgstr "Beszállítói alkatrész leírása"
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr "Megjegyzés"
@@ -4094,10 +4108,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr "Minimális díj (pl. tárolási díj)"
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr "Csomagolás"
@@ -4200,13 +4214,13 @@ msgstr "Kép törlése"
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr "Vevő"
@@ -4464,7 +4478,7 @@ msgstr "Címek"
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr "Beszállítói alkatrész"
@@ -4510,7 +4524,7 @@ msgid "No supplier information available"
msgstr "Nincs elérhető beszállítói információ"
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4562,12 +4576,12 @@ msgstr "Alkatrész elérhetőség frissítése"
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr "Készlet tételek"
@@ -4677,48 +4691,48 @@ msgstr "QR kód"
msgid "QR code"
msgstr "QR kód"
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr "Ismeretlen"
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4801,7 +4815,7 @@ msgstr "Nincs egyező beszerzési rendelés"
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr "Beszerzési rendelés"
@@ -4810,7 +4824,7 @@ msgstr "Beszerzési rendelés"
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr "Visszavétel"
@@ -5009,9 +5023,9 @@ msgstr "Beérkezett"
msgid "Number of items received"
msgstr "Érkezett tételek száma"
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr "Beszerzési ár"
@@ -5065,7 +5079,7 @@ msgid "User who checked this shipment"
msgstr "Felhasználó aki ellenőrizte ezt a szállítmányt"
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr "Szállítmány"
@@ -5727,12 +5741,12 @@ 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/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr "Alkatrész ID"
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr "Alkatrész neve"
@@ -5744,7 +5758,7 @@ msgstr "Alkatrész leírása"
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr "IPN"
@@ -5812,11 +5826,11 @@ msgstr "Minimum költség"
msgid "Maximum Cost"
msgstr "Maximum költség"
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr "Szülő ID"
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr "Szülő neve"
@@ -5825,7 +5839,7 @@ msgstr "Szülő neve"
msgid "Category Path"
msgstr "Kategória elérési út"
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5836,59 +5850,63 @@ msgstr "Kategória elérési út"
msgid "Parts"
msgstr "Alkatrészek"
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr "Alkatrészjegyzék szint"
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr "Alkatrészjegyzék tétel ID"
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr "Szülő IPN"
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr "Alkatrész IPN"
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr "Minimum ár"
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr "Maximum ár"
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr "Beérkező beszerzési rendelés"
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr "Kimenő vevői rendelés"
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr "Gyártással előállított készlet"
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr "A gyártási utasításhoz szükséges készlet"
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr "Érvényes"
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr "Teljes alkatrészjegyzék jóváhagyása"
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr "Ennek az opciónak ki kll lennie választva"
@@ -5905,7 +5923,7 @@ msgstr "Teljes készlet"
msgid "Input quantity for price calculation"
msgstr "Add meg a mennyiséget az árszámításhoz"
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Alkatrész kategória"
@@ -5920,7 +5938,7 @@ msgstr "Alkatrész kategóriák"
msgid "Default location for parts in this category"
msgstr "Ebben a kategóriában lévő alkatrészek helye alapban"
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5986,7 +6004,7 @@ msgstr "Ilyen nevű, IPN-ű és reviziójú alkatrész már létezik."
msgid "Parts cannot be assigned to structural part categories!"
msgstr "Szerkezeti kategóriákhoz nem lehet alkatrészeket rendelni!"
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr "Alkatrész neve"
@@ -6010,9 +6028,9 @@ msgstr "Alkatrész leírása (opcionális)"
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:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6277,7 +6295,7 @@ msgstr "Teljes készlet a leltárkor"
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr "Dátum"
@@ -6329,556 +6347,572 @@ msgstr "Leltározott alkatrészek száma"
msgid "User who requested this stocktake report"
msgstr "Felhasználó aki a leltár riportot kérte"
-#: part/models.py:3418
+#: part/models.py:3424
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:3435
+#: part/models.py:3434
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:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr "Teszt név"
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr "Add meg a teszt nevét"
-#: part/models.py:3464
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
+msgstr ""
+
+#: part/models.py:3465
msgid "Test Description"
msgstr "Teszt leírása"
-#: part/models.py:3465
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr "Adj hozzá egy leírást ehhez a teszthez"
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr "Kötelező"
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr "Szükséges-e hogy ez a teszt sikeres legyen?"
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr "Kötelező érték"
-#: part/models.py:3477
+#: part/models.py:3478
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:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr "Kötelező melléklet"
-#: part/models.py:3484
+#: part/models.py:3485
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:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr "Jelölőnégyzet paraméternek nem lehet mértékegysége"
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr "Jelölőnégyzet paraméternek nem lehetnek választási lehetőségei"
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr "A lehetőségek egyediek kell legyenek"
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr "A paraméter sablon nevének egyedinek kell lennie"
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr "Paraméter neve"
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr "Paraméter mértékegysége"
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr "Paraméter leírása"
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr "Jelölőnégyzet"
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr "Ez a paraméter egy jelölőnégyzet?"
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr "Lehetőségek"
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr "Választható lehetőségek (vesszővel elválasztva)"
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr "Hibás választás a paraméterre"
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr "Szülő alkatrész"
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr "Paraméter sablon"
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr "Adat"
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr "Paraméter értéke"
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr "Alapértelmezett érték"
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr "Alapértelmezett paraméter érték"
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr "Alkatrész ID vagy alkatrész név"
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr "Egyedi alkatrész ID értéke"
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr "Alkatrész IPN érték"
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr "Szint"
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr "Alkatrészjegyzék szint"
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr "Szülő alkatrész kiválasztása"
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr "Al alkatrész"
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr "Válaszd ki az alkatrészjegyzékben használandó alkatrészt"
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr "Alkatrészjegyzék mennyiség ehhez az alkatrészjegyzék tételhez"
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr "Ez az alkatrészjegyzék tétel opcionális"
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr "Ez az alkatrészjegyzék tétel fogyóeszköz (készlete nincs követve a gyártásban)"
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Többlet"
-#: part/models.py:4002
+#: part/models.py:4003
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:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr "Alkatrészjegyzék tétel azonosító"
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr "Alkatrészjegyzék tétel megjegyzései"
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr "Ellenőrző összeg"
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr "Alkatrészjegyzék sor ellenőrző összeg"
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr "Jóváhagyva"
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr "Ez a BOM tétel jóvá lett hagyva"
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr "Öröklődött"
-#: part/models.py:4036
+#: part/models.py:4037
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:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr "Változatok"
-#: part/models.py:4042
+#: part/models.py:4043
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:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
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:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr "Al alkatrészt kötelező megadni"
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr "Alkatrészjegyzék tétel helyettesítő"
-#: part/models.py:4300
+#: part/models.py:4301
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:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr "Szülő alkatrészjegyzék tétel"
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr "Helyettesítő alkatrész"
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr "1.rész"
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr "2.rész"
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr "Válassz kapcsolódó alkatrészt"
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr "Alkatrész kapcsolat nem hozható létre önmagával"
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr "Már létezik duplikált alkatrész kapcsolat"
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr "Beszerzési pénzneme ennek a készlet tételnek"
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr "Nincs kiválasztva alkatrész"
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr "Válassz kategóriát"
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr "Eredeti alkatrész"
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr "Válassz eredeti alkatrészt a másoláshoz"
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr "Kép másolása"
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr "Kép másolása az eredeti alkatrészről"
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr "Alkatrészjegyzék másolása"
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr "Alkatrészjegyzék másolása az eredeti alkatrészről"
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr "Paraméterek másolása"
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr "Paraméterek másolása az eredeti alkatrészről"
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr "Megjegyzések másolása"
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr "Megjegyzések másolása az eredeti alkatrészről"
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr "Kezdeti készlet mennyiség"
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr "Add meg a kezdeti készlet mennyiséget. Ha nulla akkor nem lesz készlet létrehozva."
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr "Kezdeti készlet hely"
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr "Add meg a kezdeti készlet helyét"
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr "Válassz beszállítót (hagyd üresen ha nem kell létrehozni)"
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr "Válassz gyártót (hagyd üresen ha nem kell létrehozni)"
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr "Gyártói cikkszám"
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr "A kiválasztott cég nem érvényes beszállító"
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr "A kiválasztott cég nem érvényes gyártó"
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr "Van már ilyen gyártói alkatrész"
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr "Van már ilyen beszállítói alkatrész"
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr "Alkatrész másolása"
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr "Kezdeti adatok másolása egy másik alkatrészről"
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr "Kezdeti készlet"
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr "Kezdeti készlet mennyiség létrehozása"
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr "Beszállító információ"
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr "Kezdeti beszállító adatok hozzáadása"
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr "Kategória paraméterek másolása"
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr "Paraméter sablonok másolása a kiválasztott alkatrész kategóriából"
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr "Meglévő kép"
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr "A meglévő alkatrész képfájl neve"
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr "A képfájl nem létezik"
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr "Leltár riport korlátozása bizonyos alkatrészre és variánsra"
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr "Leltár riport korlátozása bizonyos alkatrész kategóriára és az alatta lévőkre"
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr "Leltár riport korlátozása bizonyos készlethelyre és az alatta lévőkre"
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr "Külső készlet nélkül"
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr "Külső helyeken lévő készlet nélkül"
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr "Riport létrehozása"
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr "Riport fájl létrehozása a számított leltár adatokkal"
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr "Alaktrészek frissítése"
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr "Megadott alkatrészek frissítése a számított leltár adatokkal"
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr "Leltár funkció nincs engedélyezve"
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr "Számított minimum ár felülbírálása"
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr "Minimum ár pénzneme"
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr "Számított maximum ár felülbírálása"
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr "Maximum ár pénzneme"
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr "Frissítés"
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr "Alkatrész árak frissítése"
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr "Megadott pénznem átváltása {default_currency}-re sikertelen"
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr "A Minimum ár nem lehet nagyobb mint a Maximum ár"
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr "A Maximum ár nem lehet kisebb mint a Minimum ár"
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr "Válassz alkatrészt ahonnan az alkatrészjegyzéket másoljuk"
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr "Létező adat törlése"
-#: part/serializers.py:1611
+#: part/serializers.py:1622
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:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr "Örököltekkel együtt"
-#: part/serializers.py:1617
+#: part/serializers.py:1628
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:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr "Hibás sorok kihagyása"
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr "Engedély a hibás sorok kihagyására"
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr "Helyettesítő alkatrészek másolása"
-#: part/serializers.py:1629
+#: part/serializers.py:1640
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:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr "Meglévő alkatrészjegyzék törlése"
-#: part/serializers.py:1664
+#: part/serializers.py:1675
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:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr "Nincs megadva alkatrész oszlop"
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr "Több egyező alkatrész is található"
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr "Nincs egyező alkatrész"
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr "Az alkatrész nem lett összetevőként jelölve"
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr "Mennyiség nincs megadva"
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr "Érvénytelen mennyiség"
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr "Legalább egy alkatrészjegyzék tétel szükséges"
@@ -7041,7 +7075,7 @@ msgstr "Leltár információ hozzáadása"
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr "Leltár"
@@ -7275,7 +7309,7 @@ msgstr "Az alkatrész nem aktív"
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr "Inaktív"
@@ -7403,7 +7437,7 @@ msgstr "Változatok"
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr "Készlet"
@@ -7449,7 +7483,7 @@ msgstr "Szerkesztés"
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr "Utoljára módosítva"
@@ -7772,7 +7806,7 @@ msgstr "A címke PDF nyomtatása sikertelen"
msgid "Error rendering label to HTML"
msgstr "A címke HTML nyomtatása sikertelen"
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr "A címke PNG nyomtatása sikertelen"
@@ -8060,17 +8094,17 @@ msgstr "Módszer"
msgid "No author found"
msgstr "Nincs szerző"
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr "A '{p}' plugin nem kompatibilis az aktuális applikáció verzióval {v}"
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr "A pluginhoz minimum {v} verzió kell"
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr "A pluginhoz maximum {v} verzió kell"
@@ -8362,7 +8396,7 @@ msgstr "Összesen"
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8385,12 +8419,12 @@ msgid "Test Results"
msgstr "Teszt eredmények"
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr "Teszt"
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr "Eredmény"
@@ -8417,7 +8451,7 @@ msgstr "Beépített tételek"
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr "Sorozatszám"
@@ -8501,48 +8535,48 @@ msgstr "Törlés ha kimerül"
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr "Lejárati dátum"
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr "Külső hely"
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr "Alkatrész fa"
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr "Lejárat előtt"
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr "Lejárat után"
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr "Állott"
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr "Mennyiség megadása kötelező"
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr "Egy érvényes alkatrészt meg kell adni"
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr "A megadott beszállítói alkatrész nem létezik"
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr "A beszállítói alkatrészhez van megadva csomagolási mennyiség, de a use_pack_size flag nincs beállítva"
-#: stock/api.py:924
+#: stock/api.py:927
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"
@@ -8583,7 +8617,7 @@ msgstr "Tulajdonos kiválasztása"
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr "A szerkezeti raktári helyekre nem lehet direktben raktározni, csak az al-helyekre."
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr "Külső"
@@ -8592,7 +8626,7 @@ msgstr "Külső"
msgid "This is an external stock location"
msgstr "Ez egy külső készlethely"
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr "Helyszín típusa"
@@ -8609,7 +8643,7 @@ msgstr "Nem lehet ezt a raktári helyet szerkezetivé tenni, mert már vannak it
msgid "Stock items cannot be located into structural stock locations!"
msgstr "A szerkezeti raktári helyre nem lehet készletet felvenni!"
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr "Virtuális alkatrészből nem lehet készletet létrehozni"
@@ -8654,7 +8688,7 @@ msgstr "Válassz egy egyező beszállítói alkatrészt ehhez a készlet tételh
msgid "Where is this stock item located?"
msgstr "Hol található ez az alkatrész?"
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr "A csomagolása ennek a készlet tételnek itt van tárolva"
@@ -8666,7 +8700,7 @@ msgstr "Ez a tétel be van építve egy másik tételbe?"
msgid "Serial number for this item"
msgstr "Sorozatszám ehhez a tételhez"
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr "Batch kód ehhez a készlet tételhez"
@@ -8743,249 +8777,257 @@ msgstr "A sorozatszám egész számok listája kell legyen"
msgid "Quantity does not match serial numbers"
msgstr "A mennyiség nem egyezik a megadott sorozatszámok számával"
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr "A sorozatszámok már léteznek"
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
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:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr "Készlet tétel beépül egy másikba"
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr "A készlet tétel más tételeket tartalmaz"
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr "Készlet tétel hozzárendelve egy vevőhöz"
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr "Készlet tétel gyártás alatt"
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr "Követésre kötelezett készlet nem vonható össze"
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr "Duplikált készlet tételek vannak"
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr "A készlet tétel ugyanarra az alkatrészre kell vonatkozzon"
-#: stock/models.py:1598
+#: stock/models.py:1646
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:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr "Készlet tételek állapotainak egyeznie kell"
-#: stock/models.py:1807
+#: stock/models.py:1868
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:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr "Bejegyzés megjegyzései"
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr "Ehhez a teszthez meg kell adni értéket"
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr "Ehhez a teszthez fel kell tölteni mellékletet"
-#: stock/models.py:2344
-msgid "Test name"
-msgstr "Teszt neve"
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr "Teszt eredménye"
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr "Teszt kimeneti értéke"
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr "Teszt eredmény melléklet"
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr "Tesztek megjegyzései"
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr "Szériaszám túl nagy"
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr "Csomagolási mennyiség használata: a megadott mennyiség ennyi csomag"
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr "Készlet tétel beszerzési ára, per darab vagy csomag"
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr "Add meg hány készlet tételt lássunk el sorozatszámmal"
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr "A mennyiség nem lépheti túl a rendelkezésre álló készletet ({q})"
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr "Írd be a sorozatszámokat az új tételekhez"
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr "Cél készlet hely"
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr "Opcionális megjegyzés mező"
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr "Sorozatszámokat nem lehet hozzárendelni ehhez az alkatrészhez"
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr "Válaszd ki a beépítésre szánt készlet tételt"
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr "Beépítendő mennyiség"
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr "Adja meg a beépítendő mennyiséget"
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr "Tranzakció megjegyzés hozzáadása (opcionális)"
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr "A beépítendő mennyiség legalább 1 legyen"
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr "Készlet tétel nem elérhető"
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr "A kiválasztott alkatrész nincs az alkatrészjegyzékben"
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr "A beépítendő mennyiség nem haladhatja meg az elérhető mennyiséget"
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr "Cél hely a kiszedett tételeknek"
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr "Válassz alkatrészt amire konvertáljuk a készletet"
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr "A kiválasztott alkatrész nem megfelelő a konverzióhoz"
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr "Készlet tétel hozzárendelt beszállítói alkatrésszel nem konvertálható"
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr "Cél hely a visszatérő tételeknek"
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr "Válaszd ki a státuszváltásra szánt készlet tételeket"
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr "Nincs készlet tétel kiválasztva"
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr "Az alkatrésznek értékesíthetőnek kell lennie"
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr "A tétel egy vevő rendeléshez foglalt"
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr "A tétel egy gyártási utasításhoz foglalt"
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr "Vevő akihez rendeljük a készlet tételeket"
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr "A kiválasztott cég nem egy vevő"
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr "Készlet hozzárendelés megjegyzései"
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr "A készlet tételek listáját meg kell adni"
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr "Készlet összevonás megjegyzései"
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr "Nem egyező beszállítók megengedése"
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
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:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr "Nem egyező állapotok megjelenítése"
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
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:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr "Legalább két készlet tételt meg kell adni"
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr "Nincs változás"
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr "Készlet tétel elsődleges kulcs értéke"
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr "Készlet tétel státusz kódja"
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr "Készlet tranzakció megjegyzései"
@@ -9010,7 +9052,7 @@ msgstr "Teszt adatok"
msgid "Test Report"
msgstr "Teszt riport"
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr "Teszt adatok törlése"
@@ -9026,15 +9068,15 @@ msgstr "Készlet tétel megjegyzések"
msgid "Installed Stock Items"
msgstr "Beépített készlet tételek"
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr "Készlet tétel beépítése"
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr "Készlet tétel összes teszt eredményének törlése"
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr "Teszt eredmény hozzáadása"
@@ -9057,17 +9099,17 @@ msgid "Stock adjustment actions"
msgstr "Készlet módosítási műveletek"
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr "Leltározás"
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr "Készlet növelése"
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr "Készlet csökkentése"
@@ -9076,12 +9118,12 @@ msgid "Serialize stock"
msgstr "Sorozatszámok előállítása"
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr "Készlet áthelyezése"
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr "Vevőhöz rendelése"
@@ -9220,7 +9262,7 @@ msgid "No stocktake performed"
msgstr "Még nem volt leltározva"
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr "készlet tétel"
@@ -9331,7 +9373,7 @@ msgid "New Location"
msgstr "Új hely"
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr "készlet hely"
@@ -9836,7 +9878,7 @@ msgid "Rate"
msgstr "Árfolyam"
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9947,7 +9989,7 @@ msgid "Home Page"
msgstr "Főoldal"
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10295,7 +10337,7 @@ 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:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "Megerősítés"
@@ -10538,7 +10580,7 @@ msgid "Click on the following link to view this part"
msgstr "Klikk a következő linkre az alkatrész megjelenítéséhez"
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr "Minimum mennyiség"
@@ -11249,9 +11291,9 @@ msgid "No builds matching query"
msgstr "Nincs a lekérdezéssel egyező gyártási utasítás"
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr "Kiválaszt"
@@ -11263,7 +11305,7 @@ msgstr "Gyártás késésben van"
msgid "Progress"
msgstr "Haladás"
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr "Nincs felhasználói információ"
@@ -11324,7 +11366,7 @@ msgstr "Követett tétel"
msgid "Build stock"
msgstr "Gyártási készlet"
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr "Készlet rendelés"
@@ -11620,61 +11662,61 @@ msgstr "Összes szűrő törlése"
msgid "Create filter"
msgstr "Szűrő létrehozása"
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr "Művelet tiltva"
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr "Létrehozás nem engedélyezett"
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr "Módosítás nem engedélyezett"
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr "Törlés nem engedélyezett"
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr "Megtekintés nem engedélyezett"
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr "Form nyitva tartása"
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr "Adj meg egy érvényes számot"
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr "Form hibák vannak"
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr "Nincs találat"
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr "Keresés"
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr "Bevitel törlése"
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr "Fájl oszlop"
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr "Mező név"
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr "Oszlopok kiválasztása"
@@ -12151,7 +12193,7 @@ msgid "No category"
msgstr "Nincs kategória"
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr "Megjelenítés listaként"
@@ -12163,7 +12205,7 @@ msgstr "Megjelenítés rácsnézetként"
msgid "No subcategories found"
msgstr "Nem találhatóak alkategóriák"
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr "Megjelenítés fában"
@@ -12179,56 +12221,60 @@ msgstr "Értesítésre beállított kategória"
msgid "No test templates matching query"
msgstr "Nincs a lekérdezéssel egyező teszt sablon"
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr "találat"
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr "Teszt eredmény szerkesztése"
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr "Teszt eredmény törlése"
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
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:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr "Teszt eredmény sablon szerkesztése"
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr "Teszt eredmény sablon törlése"
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr "Nincs megadva dátum"
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr "A megadott dátum a múltban van"
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr "Spekulatív"
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
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:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr "Hiba az alkatrész ütemezési információinak betöltésekor"
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr "Ütemezett készlet mennyiség"
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr "Maximum mennyiség"
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr "Minimális készlet"
@@ -12761,7 +12807,7 @@ msgstr "Készlet foglalások törlése"
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr "Vevőnek kiszállítva"
@@ -12811,10 +12857,6 @@ msgstr "Add meg a keresési lekérdezést"
msgid "result"
msgstr "eredmény"
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr "találat"
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr "Eredmények összezárása"
@@ -13023,7 +13065,7 @@ msgstr "Egyedi követésre kötelezett tételeknél a menyiség nem módosíthat
msgid "Specify stock quantity"
msgstr "Készlet mennyiség megadása"
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr "Készlet tételek kiválasztása"
@@ -13047,248 +13089,248 @@ msgstr "SIKERTELEN"
msgid "NO RESULT"
msgstr "NINCS EREDMÉNY"
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr "Teszt sikeres"
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr "Teszt eredmény hozzáadása"
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr "Nincs teszt eredmény"
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr "Teszt dátuma"
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr "Teszt eredmény szerkesztése"
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr "Teszt eredmény törlése"
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr "Gyártásban"
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr "Beépítve készlet tételbe"
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr "Vevő rendeléshez hozzárendelve"
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr "Nincs hely megadva"
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr "Készlet állapot módosítása"
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr "Készlet összevonása"
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr "Készlet törlése"
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr "készlet tételek"
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr "Beolvasás helyre"
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr "Készlet műveletek"
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr "Beépített tételek betöltése"
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr "Készlet tétel gyártás alatt"
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr "Készlet tétel hozzárendelve egy vevői rendeléshez"
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr "Készlet tétel hozzárendelve egy vevőhöz"
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr "Egyedi követésre kötelezett készlet tétel lefoglalva"
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr "Készlet tétel teljes egészében lefoglalva"
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr "Készlet tétel részben lefoglalva"
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
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:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr "Készlet tétel fel lett használva egy gyártásban"
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr "Készlet tétel lejárt"
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr "Készlet tétel hamarosan lejár"
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr "Készlet tétel elutasítva"
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr "Készlet tétel elveszett"
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr "Készlet tétel megsemmisült"
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr "Kimerült"
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr "Beszállítói alkatrész nincs megadva"
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr "Készletérték"
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr "Nincs a lekérdezésnek megfelelő készlet tétel"
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr "készlethelyek"
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr "Alhelyek betöltése"
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr "Részletek"
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr "Nincs változás"
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr "Alkatrész információ nem áll rendelkezésre"
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr "A hely már nem létezik"
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr "A gyártási utasítás már nem létezik"
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr "Beszerzési megrendelés már nem létezik"
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr "Vevői megrendelés már nem létezik"
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr "Visszavétel már nem létezik"
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr "Vevő már nem létezik"
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr "A készlet tétel már nem létezik"
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr "Hozzáadva"
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr "Eltávolítva"
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr "Nincsenek beépített tételek"
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr "Készlet tétel kiszedése"
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr "Válaszd ki a kiszedni való készlet tételt"
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
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:3187
+#: templates/js/translated/stock.js:3181
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:3189
+#: templates/js/translated/stock.js:3183
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:3190
+#: templates/js/translated/stock.js:3184
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:3191
+#: templates/js/translated/stock.js:3185
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:3192
+#: templates/js/translated/stock.js:3186
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:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr "Válaszd ki a beépítendő alkatrészt"
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr "Válassz ki egy vagy több készlet tételt"
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr "Kiválasztott készlet tételek"
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr "Készlet állapot módosítása"
diff --git a/InvenTree/locale/id/LC_MESSAGES/django.po b/InvenTree/locale/id/LC_MESSAGES/django.po
index b07735719a05..ad9d1751d388 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"Language: id_ID\n"
@@ -51,18 +51,18 @@ msgstr "Detail terkait galat dapat dilihat di panel admin"
msgid "Enter date"
msgstr "Masukkan tanggal"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Masukkan tanggal"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Catatan"
@@ -127,42 +127,42 @@ msgstr "Domain surel yang diberikan tidak perbolehkan."
msgid "Registration is disabled."
msgstr ""
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Jumlah yang diberikan tidak valid"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Nomor seri kosong"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr ""
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr ""
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr ""
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Tidak ada nomor seri ditemukan"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Hapus tag-tag HTML dari nilai ini"
@@ -386,7 +386,7 @@ msgstr "File tidak ditemukan"
msgid "Missing external link"
msgstr "Tautan eksternal tidak ditemukan"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Lampiran"
msgid "Select file to attach"
msgstr "Pilih file untuk dilampirkan"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Komentar"
msgid "File comment"
msgstr "Komentar file"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Pengguna"
@@ -474,9 +474,9 @@ msgstr ""
msgid "Invalid choice"
msgstr "Pilihan tidak valid"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Pilihan tidak valid"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Nama"
@@ -500,8 +500,8 @@ msgstr "Nama"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Nama"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Nama"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Keterangan"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "induk"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Direktori"
@@ -576,104 +576,104 @@ msgstr "Terjadi Kesalahan Server"
msgid "An error has been logged by the server."
msgstr "Sebuah kesalahan telah dicatat oleh server."
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Harus berupa angka yang valid"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Mata Uang"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Nama File"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Nilai tidak valid"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "File data"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Pilih file untuk diunggah"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Jenis file tidak didukung"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "Ukuran file terlalu besar"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "Tidak ditemukan kolom dalam file"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "Tidak ditemukan barisan data dalam file"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Tidak ada barisan data tersedia"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Tidak ada kolom data tersedia"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Kolom yang diperlukan kurang: '{name}'"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Kolom duplikat: '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "URL file gambar external"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "Unduhan gambar dari URL external tidak aktif"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr ""
@@ -813,7 +813,7 @@ msgstr "Dipisah dari item induk"
msgid "Split child item"
msgstr "Pisah item dari barang induk"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Stok item digabungkan"
@@ -833,7 +833,7 @@ msgstr "Order output produksi selesai"
msgid "Build order output rejected"
msgstr ""
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr "Terpakai oleh order produksi"
@@ -933,14 +933,14 @@ msgstr "Tentang InvenTree"
msgid "Build must be cancelled before it can be deleted"
msgstr "Pesanan harus dibatalkan sebelum dapat dihapus"
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr ""
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr ""
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Order Produksi"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "Referensi Order Produksi"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "Produksi induk dari produksi ini"
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "Produksi induk dari produksi ini"
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "Produksi induk dari produksi ini"
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Bagian"
@@ -1099,7 +1099,7 @@ msgstr "Referensi Order Penjualan"
msgid "SalesOrder to which this build is allocated"
msgstr "Order penjualan yang teralokasikan ke pesanan ini"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "Status pembuatan"
msgid "Build status code"
msgstr "Kode status pembuatan"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "Kode Kelompok"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "Kode kelompok untuk hasil produksi ini"
@@ -1258,27 +1258,32 @@ msgstr "Hasil produksi sudah selesai"
msgid "Build output does not match Build Order"
msgstr "Hasil produksi tidak sesuai dengan order produksi"
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr "Jumlah harus lebih besar daripada nol"
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr ""
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr ""
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr ""
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr ""
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "Jumlah"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Item produksi harus menentukan hasil produksi karena bagian utama telah ditandai sebagai dapat dilacak"
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr "Item stok teralokasikan terlalu banyak"
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr "Jumlah yang dialokasikan harus lebih dari nol"
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr "Jumlah harus 1 untuk stok dengan nomor seri"
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr ""
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "Stok Item"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr "Sumber stok item"
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr "Jumlah stok yang dialokasikan ke produksi"
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr "Pasang ke"
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr "Tujuan stok item"
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr "Hasil Produksi"
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr "Hasil produksi tidak sesuai dengan produksi induk"
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr "Hasil bagian tidak sesuai dengan bagian dalam order produksi"
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr "Hasil produksi ini sudah diselesaikan"
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr "Hasil produksi tidak dialokasikan sepenuhnya"
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr "Masukkan jumlah hasil pesanan"
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr "Jumlah bagian yang dapat dilacak harus berupa angka bulat"
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr "Jumlah harus angka bulat karena terdapat bagian yang dapat dilacak dalam daftar barang"
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "Nomor Seri"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr "Masukkan nomor seri untuk hasil pesanan"
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr "Alokasikan nomor seri secara otomatis"
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Alokasikan item yang diperlukan dengan nomor seri yang sesuai secara otomatis"
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr "Nomor-nomor seri berikut sudah ada atau tidak valid"
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr "Daftar hasil pesanan harus disediakan"
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr "Daftar hasil pesanan harus disediakan"
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr "Lokasi"
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr "Lokasi hasil pesanan yang selesai"
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "Status"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr "Terima Alokasi Tidak Lengkap"
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr "Terima Tidak Teralokasikan"
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr "Terima bahwa stok item tidak teralokasikan sepenuhnya ke pesanan ini"
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr "Stok yang diperlukan belum teralokasikan sepenuhnya"
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr "Terima Tidak Selesai"
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr "Terima bahwa jumlah hasil produksi yang diperlukan belum selesai"
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr "Jumlah produksi yang diperlukan masih belum cukup"
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr "Order memiliki hasil produksi yang belum dilengkapi"
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr ""
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr "Hasil produksi"
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr "Hasil pesanan harus mengarah ke pesanan yang sama"
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr "bom_item.part harus mengarah ke bagian yang sesuai dengan order produksi"
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr "Item harus tersedia dalam stok"
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Jumlah tersedia ({q}) terlampaui"
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr "Hasil produksi harus ditentukan untuk mengalokasikan bagian yang terlacak"
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr "Hasil produksi tidak dapat ditentukan untuk alokasi barang yang tidak terlacak"
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr "Item yang dialokasikan harus disediakan"
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Lokasi stok, dari mana bahan/bagian akan diambilkan (kosongkan untuk mengambil dari lokasi mana pun)"
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr "Lokasi tidak termasuk"
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr "Jangan ambil stok item dari lokasi yang dipilih"
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr "Stok bergantian"
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Item stok di beberapa lokasi dapat digunakan secara bergantian"
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr "Stok pengganti"
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr "Izinkan alokasi bagian pengganti"
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr "Item tagihan material"
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr ""
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr ""
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr ""
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr ""
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr ""
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr ""
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr ""
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr "Surel diperlukan"
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr ""
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr ""
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
@@ -3953,7 +3967,7 @@ msgstr ""
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr ""
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr ""
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr ""
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr ""
msgid "Select supplier"
msgstr ""
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr ""
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr ""
@@ -4199,13 +4213,13 @@ msgstr ""
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr ""
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr ""
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr ""
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr ""
@@ -4809,7 +4823,7 @@ msgstr ""
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr ""
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr ""
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr ""
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr ""
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr ""
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -5919,7 +5937,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr ""
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr ""
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr ""
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr ""
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -7448,7 +7482,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr ""
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr "Lampiran perlu diunggah untuk tes ini"
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr ""
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr "Konfirmasi alamat surel"
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr "Harap konfirmasikan bahwa %(email)s adalah alamat surel untuk pengguna %(user_display)s."
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "Konfirmasi"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po
index dee04da8e9fa..4a397cf92887 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:42\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -51,18 +51,18 @@ msgstr "I dettagli dell'errore possono essere trovati nel pannello di amministra
msgid "Enter date"
msgstr "Inserisci la data"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Inserisci la data"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Note"
@@ -127,42 +127,42 @@ msgstr "L'indirizzo di posta elettronica fornito non è approvato."
msgid "Registration is disabled."
msgstr "La registrazione è disabilitata."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Quantità inserita non valida"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Numero seriale vuoto"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Seriale Duplicato"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr "Intervallo di gruppo non valido: {group}"
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "L'intervallo di gruppo {group} supera la quantità consentita ({expected_quantity})"
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr "Sequenza di gruppo non valida: {group}"
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Nessun numero di serie trovato"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Il numero di numeri di serie univoci ({len(serials)}) deve corrispondere alla quantità ({expected_quantity})"
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Rimuovi i tag HTML da questo valore"
@@ -386,7 +386,7 @@ msgstr "File mancante"
msgid "Missing external link"
msgstr "Link esterno mancante"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Allegato"
msgid "Select file to attach"
msgstr "Seleziona file da allegare"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Commento"
msgid "File comment"
msgstr "Commento del file"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Utente"
@@ -474,9 +474,9 @@ msgstr "Nomi duplicati non possono esistere sotto lo stesso genitore"
msgid "Invalid choice"
msgstr "Scelta non valida"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Scelta non valida"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Nome"
@@ -500,8 +500,8 @@ msgstr "Nome"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Nome"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Nome"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Descrizione"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "genitore"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Percorso"
@@ -576,104 +576,104 @@ msgstr "Errore del server"
msgid "An error has been logged by the server."
msgstr "Un errore è stato loggato dal server."
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Deve essere un numero valido"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Valuta"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr "Selezionare la valuta dalle opzioni disponibili"
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr "Non hai i permessi per cambiare il ruolo dell'utente."
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr "Solo i superutenti possono creare nuovi utenti"
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Nome del file"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Valore non valido"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "File dati"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Seleziona un file per il caricamento"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Formato file non supportato"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "File troppo grande"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "Nessun colonna trovata nel file"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "Nessuna riga di dati trovata nel file"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Nessun dato fornito"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Nessuna colonna di dati fornita"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Colonna richiesta mancante: '{name}'"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Colonna duplicata: '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr "Immagine Remota"
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "URL del file immagine remota"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "Il download delle immagini da URL remoto non è abilitato"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Controllo in background non riuscito"
@@ -813,7 +813,7 @@ msgstr "Diviso dall'elemento genitore"
msgid "Split child item"
msgstr "Dividi elemento figlio"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Elemento stock raggruppato"
@@ -833,7 +833,7 @@ msgstr "Build order output completato"
msgid "Build order output rejected"
msgstr "Ordine di costruzione rifiutato"
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr "Impegnato dall'ordine di costruzione"
@@ -933,14 +933,14 @@ msgstr "Informazioni Su InvenTree"
msgid "Build must be cancelled before it can be deleted"
msgstr "La produzione deve essere annullata prima di poter essere eliminata"
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr "Consumabile"
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr "Allocato"
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr "Disponibile"
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Ordine di Produzione"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "Riferimento Ordine Di Produzione"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "Ordine di produzione a cui questa produzione viene assegnata"
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "Ordine di produzione a cui questa produzione viene assegnata"
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "Ordine di produzione a cui questa produzione viene assegnata"
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Articolo"
@@ -1099,7 +1099,7 @@ msgstr "Numero di riferimento ordine di vendita"
msgid "SalesOrder to which this build is allocated"
msgstr "Ordine di vendita a cui questa produzione viene assegnata"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "Stato Produzione"
msgid "Build status code"
msgstr "Codice stato di produzione"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "Codice Lotto"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "Codice del lotto per questa produzione"
@@ -1258,27 +1258,32 @@ msgstr "La produzione è stata completata"
msgid "Build output does not match Build Order"
msgstr "L'output della produzione non corrisponde all'ordine di compilazione"
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr "La quantità deve essere maggiore di zero"
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr "La quantità non può essere maggiore della quantità in uscita"
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr "Crea oggetto"
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr "Crea oggetto"
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr "Crea oggetto"
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr "Crea oggetto"
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "Quantità"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr "Quantità richiesta per l'ordine di costruzione"
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "L'elemento di compilazione deve specificare un output poiché la parte principale è contrassegnata come rintracciabile"
-#: build/models.py:1382
+#: build/models.py:1387
#, 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:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr "L'articolo in giacenza è sovrallocato"
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr "La quantità di assegnazione deve essere maggiore di zero"
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr "La quantità deve essere 1 per lo stock serializzato"
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr "L'articolo in stock selezionato non corrisponde alla voce nella BOM"
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr "L'articolo in stock selezionato non corrisponde alla voce nella BOM"
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "Articoli in magazzino"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr "Origine giacenza articolo"
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr "Quantità di magazzino da assegnare per la produzione"
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr "Installa in"
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr "Destinazione articolo in giacenza"
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr "Genera Output"
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr "L'output generato non corrisponde alla produzione principale"
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr "L'output non corrisponde alle parti dell'ordine di produzione"
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr "Questa produzione è stata già completata"
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr "Questo output non è stato completamente assegnato"
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr "Inserisci la quantità per l'output di compilazione"
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr "Quantità totale richiesta per articoli rintracciabili"
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr "Quantità totale richiesta, poiché la fattura dei materiali contiene articoli rintracciabili"
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "Codice Seriale"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr "Inserisci i numeri di serie per gli output di compilazione (build option)"
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr "Numeri di Serie Assegnazione automatica"
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Assegna automaticamente gli articoli richiesti con i numeri di serie corrispondenti"
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr "I seguenti numeri di serie sono già esistenti o non sono validi"
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr "Deve essere fornito un elenco dei risultati di produzione"
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr "Deve essere fornito un elenco dei risultati di produzione"
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr "Posizione"
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr "Posizione per gli output di build completati"
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "Stato"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr "Accetta Assegnazione Incompleta"
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr "Completa l'output se le scorte non sono state interamente assegnate"
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr "Rimuovi Giacenze Allocate"
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr "Detrai qualsiasi scorta che è stata già assegnata a questa produzione"
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr "Rimuovi Output Incompleti"
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr "Elimina gli output di produzione che non sono stati completati"
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr "Non permesso"
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr "Accetta come consumato da questo ordine di produzione"
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr "Non assegnare prima di aver completato questo ordine di produzione"
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr "Giacenza in eccesso assegnata"
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr "Come si desidera gestire gli elementi extra giacenza assegnati all'ordine di produzione"
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr "Alcuni articoli di magazzino sono stati assegnati in eccedenza"
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr "Accetta Non Assegnato"
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr "Accetta che gli elementi in giacenza non sono stati completamente assegnati a questo ordine di produzione"
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr "La giacenza richiesta non è stata completamente assegnata"
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr "Accetta Incompleta"
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr "Accetta che il numero richiesto di output di produzione non sia stato completato"
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr "La quantità di produzione richiesta non è stata completata"
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr "L'ordine di produzione ha output incompleti"
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr "Linea di produzione"
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr "Genera Output"
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr "L'output di produzione deve puntare alla stessa produzione"
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr "Articolo linea di produzione"
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr "gli elementi degli articoli della distinta base devono puntare alla stessa parte dell'ordine di produzione"
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr "L'articolo deve essere disponibile"
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Quantità disponibile ({q}) superata"
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr "L'output di produzione deve essere specificato per l'ubicazione delle parti tracciate"
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr "L'output di produzione non deve essere specificato per l'ubicazione delle parti non tracciate"
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr "Deve essere indicata l'allocazione dell'articolo"
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Posizione dello stock in cui le parti devono prelevate (lasciare vuoto per prelevare da qualsiasi luogo)"
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr "Escludi Ubicazione"
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr "Escludi gli elementi stock da questa ubicazione selezionata"
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr "Scorte Intercambiabili"
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Gli elementi in magazzino in più sedi possono essere utilizzati in modo intercambiabile"
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr "Sostituisci Giacenze"
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr "Consenti l'allocazione delle parti sostitutive"
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr "Articoli Opzionali"
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr "Assegna gli elementi opzionali della distinta base all'ordine di produzione"
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr "Distinta base (Bom)"
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr "Ordinato"
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr "Outputs Completati"
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr "Ordini di Vendita"
@@ -1908,10 +1913,10 @@ msgstr "Articoli Assegnati"
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr "Nome dominio non valido: {domain}"
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr "Riavvio richiesto"
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr "È stata modificata un'impostazione che richiede un riavvio del server"
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr "Nome Istanza Del Server"
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr "Descrittore stringa per l'istanza del server"
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr "Utilizza nome istanza"
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr "Usa il nome dell'istanza nella barra del titolo"
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr "Limita visualizzazione `Informazioni`"
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr "Mostra la modalità `Informazioni` solo ai superusers"
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr "Nome azienda"
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr "Nome interno dell'azienda"
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr "URL Base"
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr "URL di base per l'istanza del server"
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr "Valuta predefinita"
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr "giorni"
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr "Scarica dall'URL"
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr "Consenti il download di immagini e file remoti da URL esterno"
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr "Limite Dimensione Download"
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr "Dimensione massima consentita per il download dell'immagine remota"
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr "User-agent utilizzato per scaricare dall'URL"
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr "Consenti di sovrascrivere l'user-agent utilizzato per scaricare immagini e file da URL esterno (lasciare vuoto per il predefinito)"
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr "Richiesta conferma"
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr "Richiede una conferma esplicita dell'utente per una determinata azione."
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr "Profondità livelli"
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr "Profondità predefinita per la visualizzazione ad albero. I livelli più in alto possono essere caricati più lentamente quando necessari."
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr "Aggiorna intervallo di controllo"
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr "Quanto spesso controllare gli aggiornamenti (impostare a zero per disabilitare)"
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr "Backup automatico"
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr "Abilita il backup automatico di database e file multimediali"
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr "Intervallo Di Backup Automatico"
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr "Definisci i giorni intercorrenti tra un backup automatico e l'altro"
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr "I risultati delle attività in background verranno eliminati dopo un determinato numero di giorni"
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr "I log di errore verranno eliminati dopo il numero specificato di giorni"
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr "Le notifiche dell'utente verranno eliminate dopo il numero di giorni specificato"
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Supporto Codice A Barre"
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr "Codice a barre inserito scaduto"
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr "Tempo di ritardo di elaborazione codice a barre"
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr "Codice a Barre Supporto Webcam"
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr "Consenti la scansione del codice a barre tramite webcam nel browser"
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr "Abilita il campo revisione per l'articolo"
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr "IPN Regex"
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr "Schema di espressione regolare per l'articolo corrispondente IPN"
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr "Consenti duplicati IPN"
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr "Permetti a più articoli di condividere lo stesso IPN"
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr "Permetti modifiche al part number interno (IPN)"
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr "Consenti di modificare il valore del part number durante la modifica di un articolo"
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr "Copia I Dati Della distinta base dell'articolo"
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr "Copia i dati della Distinta Base predefinita quando duplichi un articolo"
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr "Copia I Dati Parametro dell'articolo"
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr "Copia i dati dei parametri di default quando si duplica un articolo"
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr "Copia I Dati dell'Articolo Test"
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr "Copia i dati di prova di default quando si duplica un articolo"
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr "Copia Template Parametri Categoria"
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr "Copia i modelli dei parametri categoria quando si crea un articolo"
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr "Modello"
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr "Gli articoli sono modelli per impostazione predefinita"
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr "Assemblaggio"
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr "Gli articoli possono essere assemblate da altri componenti per impostazione predefinita"
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr "Componente"
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr "Gli articoli possono essere assemblati da altri componenti per impostazione predefinita"
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr "Acquistabile"
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr "Gli articoli sono acquistabili per impostazione predefinita"
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr "Vendibile"
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr "Gli articoli sono acquistabili per impostazione predefinita"
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr "Tracciabile"
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr "Gli articoli sono tracciabili per impostazione predefinita"
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr "Virtuale"
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr "Gli articoli sono virtuali per impostazione predefinita"
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr "Mostra l'importazione nelle viste"
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr "Mostra la procedura guidata di importazione in alcune viste articoli"
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr "Mostra articoli correlati"
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr "Visualizza parti correlate per ogni articolo"
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr "Dati iniziali dello stock"
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr "Consentire la creazione di uno stock iniziale quando si aggiunge una nuova parte"
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr "Dati iniziali del fornitore"
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr "Consentire la creazione dei dati iniziali del fornitore quando si aggiunge una nuova parte"
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr "Formato di visualizzazione del nome articolo"
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr "Formato per visualizzare il nome dell'articolo"
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr "Icona predefinita Categoria Articolo"
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr "Icona predefinita Categoria Articolo (vuoto significa nessuna icona)"
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr "Usa Prezzi Fornitore"
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr "Includere le discontinuità di prezzo del fornitore nei calcoli generali dei prezzi"
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr "Ignora la Cronologia Acquisti"
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr "Cronologia dei prezzi dell'ordine di acquisto del fornitore superati con discontinuità di prezzo"
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr "Utilizzare i prezzi degli articoli in stock"
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr "Utilizzare i prezzi dei dati di magazzino inseriti manualmente per il calcolo dei prezzi"
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr "Età dei prezzi degli articoli in stock"
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr "Escludere dal calcolo dei prezzi gli articoli in giacenza più vecchi di questo numero di giorni"
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr "Utilizza Variazione di Prezzo"
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr "Includi la variante dei prezzi nei calcoli dei prezzi complessivi"
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr "Solo Varianti Attive"
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr "Utilizza solo articoli di varianti attive per calcolare i prezzi delle varianti"
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr "Numero di giorni prima che il prezzo dell'articolo venga aggiornato automaticamente"
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr "Prezzi interni"
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr "Abilita prezzi interni per gli articoli"
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr "Sovrascrivi Prezzo Interno"
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr "Se disponibile, i prezzi interni sostituiscono i calcoli della fascia di prezzo"
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr "Abilita stampa etichette"
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr "Abilita la stampa di etichette dall'interfaccia web"
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr "Etichetta Immagine DPI"
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr "Risoluzione DPI quando si generano file di immagine da fornire ai plugin di stampa per etichette"
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr "Abilita Report di Stampa"
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr "Abilita generazione di report di stampa"
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr "Modalità Debug"
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr "Genera report in modalità debug (output HTML)"
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr "Dimensioni pagina"
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr "Dimensione predefinita della pagina per i report PDF"
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr "Abilita Rapporto di Prova"
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr "Abilita generazione di stampe di prova"
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr "Allega Rapporto di Prova"
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr "Quando si stampa un rapporto di prova, allegare una copia del rapporto di prova all'elemento di magazzino associato"
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr "Seriali Unici Globali"
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr "I numeri di serie per gli articoli di magazzino devono essere univoci"
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr "Auto Riempimento Numeri Seriali"
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr "Auto riempimento numeri nel modulo"
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr "Elimina scorte esaurite"
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr "Determina il comportamento predefinito quando un elemento stock è esaurito"
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr "Modello Codice a Barre"
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr "Modello per la generazione di codici batch predefiniti per gli elementi stock"
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr "Scadenza giacenza"
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr "Abilita funzionalità di scadenza della giacenza"
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr "Vendi giacenza scaduta"
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr "Consenti la vendita di stock scaduti"
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr "Tempo di Scorta del Magazzino"
-#: common/models.py:1697
+#: common/models.py:1709
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:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr "Crea giacenza scaduta"
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr "Permetti produzione con stock scaduto"
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr "Controllo della proprietà della giacenza"
-#: common/models.py:1711
+#: common/models.py:1723
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:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr "Icona Predefinita Ubicazione di Magazzino"
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr "Icona Predefinita Ubicazione di Magazzino (vuoto significa nessuna icona)"
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr "Modello Di Riferimento Ordine Di Produzione"
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr "Modello richiesto per generare il campo di riferimento ordine di produzione"
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr "Modello Di Riferimento Ordine Di Vendita"
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr "Modello richiesto per generare il campo di riferimento ordine di vendita"
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr "Spedizione Predefinita Ordine Di Vendita"
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr "Abilita la creazione di spedizioni predefinite con ordini di vendita"
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr "Modifica Ordini Di Vendita Completati"
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr "Consenti la modifica degli ordini di vendita dopo che sono stati spediti o completati"
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr "Modello di Riferimento Ordine D'Acquisto"
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr "Modello richiesto per generare il campo di riferimento ordine di acquisto"
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr "Modifica Ordini Di Acquisto Completati"
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr "Consenti la modifica degli ordini di acquisto dopo che sono stati spediti o completati"
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr "Abilita password dimenticata"
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr "Abilita la funzione password dimenticata nelle pagine di accesso"
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr "Abilita registrazione"
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr "Abilita auto-registrazione per gli utenti nelle pagine di accesso"
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr "SSO abilitato"
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr "Abilita SSO nelle pagine di accesso"
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr "Abilita registrazione SSO"
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr "Abilita l'auto-registrazione tramite SSO per gli utenti nelle pagine di accesso"
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr "Email richiesta"
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr "Richiedi all'utente di fornire una email al momento dell'iscrizione"
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr "Riempimento automatico degli utenti SSO"
-#: common/models.py:1838
+#: common/models.py:1850
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:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr "Posta due volte"
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr "Al momento della registrazione chiedere due volte all'utente l'indirizzo di posta elettronica"
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr "Password due volte"
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr "Al momento della registrazione chiedere agli utenti due volte l'inserimento della password"
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr "Domini consentiti"
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr "Gruppo iscrizione"
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr "Gruppo a cui i nuovi utenti vengono assegnati al momento della registrazione"
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr "Applica MFA"
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr "Gli utenti devono utilizzare la sicurezza a due fattori."
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr "Controlla i plugin all'avvio"
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr "Controlla che tutti i plugin siano installati all'avvio - abilita in ambienti contenitore"
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr "Abilita l'integrazione URL"
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr "Attiva plugin per aggiungere percorsi URL"
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr "Attiva integrazione navigazione"
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr "Abilita i plugin per l'integrazione nella navigazione"
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr "Abilita l'app integrata"
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr "Abilita plugin per aggiungere applicazioni"
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr "Abilita integrazione pianificazione"
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr "Abilita i plugin per eseguire le attività pianificate"
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr "Abilita eventi integrati"
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr "Abilita plugin per rispondere agli eventi interni"
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr "Funzionalità Dell'Inventario"
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr "Abilita la funzionalità d'inventario per la registrazione dei livelli di magazzino e il calcolo del valore di magazzino"
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr "Inventario periodico automatico"
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr "Numero di giorni tra la registrazione automatica dell'inventario (imposta 0 per disabilitare)"
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr "I rapporti d'inventario verranno eliminati dopo il numero specificato di giorni"
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole"
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr "Nascondi Articoli Inattivi"
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr "Mostra articoli sottoscritti"
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr "Mostra gli articoli sottoscritti nella homepage"
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr "Mostra le categorie sottoscritte"
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr "Mostra le categorie dei componenti sottoscritti nella homepage"
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr "Mostra ultimi articoli"
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr "Mostra gli ultimi articoli sulla homepage"
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr "Mostra distinta base non convalidata"
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr "Mostra le distinte base che attendono la convalida sulla homepage"
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr "Mostra le modifiche recenti alle giacenze"
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr "Mostra le giacenze modificate di recente nella homepage"
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr "Mostra disponibilità scarsa delle giacenze"
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr "Mostra disponibilità scarsa degli articoli sulla homepage"
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr "Mostra scorte esaurite"
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr "Mostra disponibilità scarsa delle scorte degli articoli sulla homepage"
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr "Mostra scorte necessarie"
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr "Mostra le scorte degli articoli necessari per la produzione sulla homepage"
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr "Mostra scorte esaurite"
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr "Mostra gli articoli stock scaduti nella home page"
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr "Mostra scorte obsolete"
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr "Mostra gli elementi obsoleti esistenti sulla home page"
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr "Mostra produzioni in attesa"
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr "Mostra produzioni in attesa sulla homepage"
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr "Mostra produzioni in ritardo"
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr "Mostra produzioni in ritardo sulla home page"
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr "Mostra ordini di produzione inevasi"
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr "Mostra ordini di produzione inevasi sulla home page"
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr "Mostra Ordini di Produzione in ritardo"
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr "Mostra Ordini di Produzione in ritardo sulla home page"
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr "Mostra Ordini di Vendita inevasi"
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr "Mostra Ordini di Vendita inevasi sulla home page"
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr "Mostra Ordini di Vendita in ritardo"
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr "Mostra Ordini di Vendita in ritardo sulla home page"
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr "Mostra Notizie"
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr "Mostra notizie sulla home page"
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr "Visualizzazione dell'etichetta in linea"
-#: common/models.py:2139
+#: common/models.py:2159
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:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr "Stampante per etichette predefinita"
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr "Configura quale stampante di etichette deve essere selezionata per impostazione predefinita"
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr "Visualizzazione dell'etichetta in linea"
-#: common/models.py:2155
+#: common/models.py:2175
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:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr "Cerca Articoli"
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr "Mostra articoli della ricerca nella finestra di anteprima"
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr "Mostra articoli del fornitore nella finestra di anteprima"
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr "Cerca Articoli Produttore"
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr "Mostra articoli del produttore nella finestra di anteprima"
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr "Nascondi Articoli Inattivi"
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr "Escludi articoli inattivi dalla finestra di anteprima della ricerca"
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr "Cerca Categorie"
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr "Mostra categorie articolo nella finestra di anteprima di ricerca"
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr "Cerca Giacenze"
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr "Mostra articoli in giacenza nella finestra di anteprima della ricerca"
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr "Nascondi elementi non disponibili"
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr "Escludi gli elementi stock che non sono disponibili dalla finestra di anteprima di ricerca"
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr "Cerca Ubicazioni"
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr "Mostra ubicazioni delle giacenze nella finestra di anteprima di ricerca"
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr "Cerca Aziende"
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr "Mostra le aziende nella finestra di anteprima di ricerca"
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr "Cerca Ordini Di Produzione"
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr "Mostra gli ordini di produzione nella finestra di anteprima di ricerca"
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr "Cerca Ordini di Acquisto"
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr "Mostra gli ordini di acquisto nella finestra di anteprima di ricerca"
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr "Escludi Ordini D'Acquisto Inattivi"
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr "Escludi ordini di acquisto inattivi dalla finestra di anteprima di ricerca"
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr "Cerca Ordini Di Vendita"
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr "Visualizzazione degli ordini di vendita nella finestra di anteprima della ricerca"
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr "Escludi Ordini Di Vendita Inattivi"
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr "Escludi ordini di vendita inattivi dalla finestra di anteprima di ricerca"
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr "Cerca Ordini Di Reso"
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr "Risultati Dell'Anteprima Di Ricerca"
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr "Numero di risultati da visualizzare in ciascuna sezione della finestra di anteprima della ricerca"
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr "Ricerca con regex"
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr "Mostra quantità nei moduli"
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr "Visualizzare la quantità di pezzi disponibili in alcuni moduli"
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr "Il tasto Esc chiude i moduli"
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr "Utilizzare il tasto Esc per chiudere i moduli modali"
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr "Barra di navigazione fissa"
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr "La posizione della barra di navigazione è fissata nella parte superiore dello schermo"
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr "Formato Data"
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr "Formato predefinito per visualizzare le date"
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Programmazione Prodotto"
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr "Mostra informazioni sulla pianificazione del prodotto"
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr "Inventario Prodotto"
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr "Visualizza le informazioni d'inventario dell'articolo (se la funzionalità d'inventario è abilitata)"
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr "Lunghezza Stringa Tabella"
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr "Quantità prezzo limite"
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr "Quantità prezzo limite"
msgid "Price"
msgstr "Prezzo"
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr "Prezzo unitario in quantità specificata"
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr "Scadenza"
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr "Scadenza in cui questa notifica viene ricevuta"
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr "Nome per questa notifica"
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr "Nome per questa notifica"
msgid "Active"
msgstr "Attivo"
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr "È questa notifica attiva"
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr "Token"
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr "Token per l'accesso"
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr "Segreto"
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr "Segreto condiviso per HMAC"
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr "ID Messaggio"
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr "Identificatore unico per questo messaggio"
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr "Host"
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr "Host da cui questo messaggio è stato ricevuto"
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr "Intestazione"
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr "Intestazione di questo messaggio"
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr "Contenuto"
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr "Contenuto di questo messaggio"
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr "Scadenza in cui questo messaggio è stato ricevuto"
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr "Lavorato il"
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr "Il lavoro su questo messaggio è terminato?"
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr "Id"
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr "Titolo"
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr "Pubblicato"
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Autore"
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Riepilogo"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr "Letto"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr "Queste notizie sull'elemento sono state lette?"
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr "Queste notizie sull'elemento sono state lette?"
msgid "Image"
msgstr "Immagine"
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr "File immagine"
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr "Valuta predefinita utilizzata per questa azienda"
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr "Azienda"
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Articolo di base"
@@ -3953,7 +3967,7 @@ msgstr "Seleziona articolo"
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr "Seleziona Produttore"
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr "Nome parametro"
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr "Valore"
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr "Valore del parametro"
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr "L'articolo del costruttore collegato deve riferirsi alla stesso articolo
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr "Fornitore"
msgid "Select supplier"
msgstr "Seleziona fornitore"
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr "Unità di giacenza magazzino fornitore"
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr "Descrizione articolo fornitore"
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr "Nota"
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr "Onere minimo (ad esempio tassa di stoccaggio)"
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr "Confezionamento"
@@ -4199,13 +4213,13 @@ msgstr "Elimina immagine"
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr "Cliente"
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr "Articolo Fornitore"
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr "Nessuna informazione sul fornitore disponibile"
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr "Articoli in magazzino"
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr "Sconosciuto"
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr "Nessun ordine di acquisto corrispondente trovato"
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr "Ordine D'Acquisto"
@@ -4809,7 +4823,7 @@ msgstr "Ordine D'Acquisto"
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr "Restituisci ordine"
@@ -5008,9 +5022,9 @@ msgstr "Ricevuto"
msgid "Number of items received"
msgstr "Numero di elementi ricevuti"
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr "Prezzo di Acquisto"
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr "Utente che ha controllato questa spedizione"
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr "Spedizione"
@@ -5726,12 +5740,12 @@ msgstr "Aggiornato {part} prezzo unitario a {price}"
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr "Aggiornato {part} unità prezzo a {price} e quantità a {qty}"
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr "Codice Articolo"
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr "Nome Articolo"
@@ -5743,7 +5757,7 @@ msgstr "Descrizione Articolo"
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr "IPN - Numero di riferimento interno"
@@ -5811,11 +5825,11 @@ msgstr "Costo Minimo"
msgid "Maximum Cost"
msgstr "Costo Massimo"
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr "ID principale"
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr "Nome Principale"
@@ -5824,7 +5838,7 @@ msgstr "Nome Principale"
msgid "Category Path"
msgstr "Percorso Categoria"
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr "Percorso Categoria"
msgid "Parts"
msgstr "Articoli"
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr "Livello Distinta Base"
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr "ID Elemento Distinta Base"
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr "IPN Principale"
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr "IPN Articolo"
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr "Prezzo Minimo"
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr "Prezzo Massimo"
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr "Ordine D'Acquisto In Arrivo"
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr "Ordine di Vendita in Uscita"
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr "Giacenza prodotta dall'Ordine di Costruzione"
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr "Giacenza richiesta per l'Ordine di Produzione"
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr "Valido"
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr "Convalida l'intera Fattura dei Materiali"
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr "Questa opzione deve essere selezionata"
@@ -5904,7 +5922,7 @@ msgstr "Giacenze Totali"
msgid "Input quantity for price calculation"
msgstr "Digita la quantità per il calcolo del prezzo"
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Categoria Articoli"
@@ -5919,7 +5937,7 @@ msgstr "Categorie Articolo"
msgid "Default location for parts in this category"
msgstr "Posizione predefinita per gli articoli di questa categoria"
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr "Un articolo con questo Nome, IPN e Revisione esiste già."
msgid "Parts cannot be assigned to structural part categories!"
msgstr "Gli articoli non possono essere assegnati a categorie articolo principali!"
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr "Nome articolo"
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr "Parole chiave per migliorare la visibilità nei risultati di ricerca"
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr "Totale delle scorte disponibili al momento dell'inventario"
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr "Data"
@@ -6328,556 +6346,572 @@ msgstr "Numero di articoli oggetto d'inventario"
msgid "User who requested this stocktake report"
msgstr "Utente che ha richiesto questo report inventario"
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr "Il modello di prova può essere creato solo per gli articoli rintracciabili"
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr "Una prova con questo nome esiste già per questo articolo"
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr "Nome Test"
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr "Inserisci un nome per la prova"
-#: part/models.py:3464
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
+msgstr ""
+
+#: part/models.py:3465
msgid "Test Description"
msgstr "Descrizione Di Prova"
-#: part/models.py:3465
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr "Inserisci descrizione per questa prova"
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr "Richiesto"
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr "Questa prova è necessaria per passare?"
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr "Valore richiesto"
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr "Questa prova richiede un valore quando si aggiunge un risultato di prova?"
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr "Allegato Richiesto"
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr "Questa prova richiede un file allegato quando si aggiunge un risultato di prova?"
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr "Il nome del modello del parametro deve essere univoco"
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr "Nome Parametro"
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr "Descrizione del parametro"
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr "Articolo principale"
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr "Modello Parametro"
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr "Dati"
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr "Valore del Parametro"
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr "Valore Predefinito"
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr "Valore Parametro Predefinito"
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr "ID articolo o nome articolo"
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr "Valore ID articolo univoco"
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr "Valore IPN articolo"
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr "Livello"
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr "Livello distinta base"
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr "Seleziona articolo principale"
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr "Articolo subordinato"
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr "Seleziona l'articolo da utilizzare nella Distinta Base"
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr "Quantità Distinta Base per questo elemento Distinta Base"
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr "Questo elemento della Distinta Base è opzionale"
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr "Questo elemento della Distinta Base è consumabile (non è tracciato negli ordini di produzione)"
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Eccedenza"
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "Quantità stimata scarti di produzione (assoluta o percentuale)"
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr "Riferimento Elemento Distinta Base"
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr "Note Elemento Distinta Base"
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr "Codice di controllo"
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr "Codice di controllo Distinta Base"
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr "Convalidato"
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr "Questo elemento della Distinta Base viene ereditato dalle Distinte Base per gli articoli varianti"
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr "Consenti Le Varianti"
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr "Gli elementi in giacenza per gli articoli varianti possono essere utilizzati per questo elemento Distinta Base"
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr "La quantità deve essere un valore intero per gli articoli rintracciabili"
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr "L'articolo subordinato deve essere specificato"
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr "Elemento Distinta Base Sostituito"
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr "La parte sostituita non può essere la stessa dell'articolo principale"
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr "Elemento principale Distinta Base"
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr "Sostituisci l'Articolo"
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr "Articolo 1"
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr "Articolo 2"
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr "Seleziona Prodotto Relativo"
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr "Non si può creare una relazione tra l'articolo e sé stesso"
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr "La relazione duplicata esiste già"
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr "Valuta di acquisto di questo articolo in stock"
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr "Articolo Originale"
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr "Seleziona l'articolo originale da duplicare"
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr "Copia immagine"
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr "Copia immagine dall'articolo originale"
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr "Copia Distinta Base"
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr "Copia fattura dei materiali dall'articolo originale"
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr "Copia parametri"
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr "Copia i dati dei parametri dall'articolo originale"
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr "Quantità iniziale"
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr "Specificare la quantità iniziale disponibile per questo Articolo. Se la quantità è zero, non viene aggiunta alcuna quantità."
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr "Ubicazione Iniziale Magazzino"
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr "Specificare l'ubicazione iniziale del magazzino per questo Articolo"
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr "Seleziona il fornitore (o lascia vuoto per saltare)"
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr "Seleziona il produttore (o lascia vuoto per saltare)"
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr "Codice articolo Produttore"
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr "L'azienda selezionata non è un fornitore valido"
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr "L'azienda selezionata non è un produttore valido"
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr "L'articolo del produttore che corrisponde a questo MPN esiste già"
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr "L'articolo del fornitore che corrisponde a questo SKU esiste già"
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr "Duplica articolo"
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr "Copia i dati iniziali da un altro Articolo"
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr "Stock iniziale"
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr "Crea Articolo con quantità di scorta iniziale"
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr "Informazioni Fornitore"
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr "Aggiungi le informazioni iniziali del fornitore per questo articolo"
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr "Copia Parametri Categoria"
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr "Copia i parametri dai modelli della categoria articolo selezionata"
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr "Limitare il report d'inventario ad un articolo particolare e a eventuali articoli varianti"
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr "Limita il report d'inventario ad una particolare categoria articolo, e a eventuali categorie secondarie"
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr "Limita il report d'inventario ad una particolare ubicazione di magazzino, e a eventuali ubicazioni secondarie"
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr "Genera Report"
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr "Genera file di report contenente dati di inventario calcolati"
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr "Aggiorna Articoli"
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr "Aggiorna gli articoli specificati con i dati calcolati di inventario"
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr "La funzione Inventario non è abilitata"
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr "Aggiorna"
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr "Aggiorna i prezzi per questo articolo"
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr "Seleziona l'articolo da cui copiare la distinta base"
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr "Rimuovi Dati Esistenti"
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr "Rimuovi elementi distinta base esistenti prima di copiare"
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr "Includi Ereditato"
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr "Includi gli elementi Distinta Base ereditati da prodotti template"
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr "Salta Righe Non Valide"
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr "Abilita questa opzione per saltare le righe non valide"
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr "Copia Articoli sostitutivi"
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr "Copia articoli sostitutivi quando duplichi gli elementi distinta base"
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr "Cancella Distinta Base esistente"
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr "Rimuovi elementi distinta base esistenti prima del caricamento"
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr "Nessuna colonna articolo specificata"
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr "Trovati più articoli corrispondenti"
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr "Nessun articolo corrispondente trovato"
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr "L'articolo non è indicato come componente"
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr "Quantità non fornita"
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr "Quantità non valida"
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr "Almeno un elemento della distinta base è richiesto"
@@ -7040,7 +7074,7 @@ msgstr "Aggiungi informazioni inventario"
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr "Inventario"
@@ -7274,7 +7308,7 @@ msgstr "L'articolo non è attivo"
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr "Inattivo"
@@ -7402,7 +7436,7 @@ msgstr "Varianti"
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr "Magazzino"
@@ -7448,7 +7482,7 @@ msgstr "Modifica"
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr "Ultimo aggiornamento"
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr "Metodo"
msgid "No author found"
msgstr "Nessun autore trovato"
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr "Totale"
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr "Risultati Test"
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr "Test"
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr "Risultato"
@@ -8416,7 +8450,7 @@ msgstr "Elementi installati"
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr "Seriale"
@@ -8500,48 +8534,48 @@ msgstr "Elimina al esaurimento"
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr "Data di Scadenza"
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr "Ubicazione Esterna"
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr "Obsoleto"
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr "La quantità è richiesta"
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr "Deve essere fornita un articolo valido"
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr "I numeri di serie non possono essere forniti per un articolo non tracciabile"
@@ -8582,7 +8616,7 @@ msgstr "Seleziona Owner"
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr "Gli elementi di magazzino non possono essere direttamente situati in un magazzino strutturale, ma possono essere situati in ubicazioni secondarie."
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr "Esterno"
@@ -8591,7 +8625,7 @@ msgstr "Esterno"
msgid "This is an external stock location"
msgstr "Si tratta di una posizione esterna al magazzino"
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr "Non puoi rendere strutturale questa posizione di magazzino perché alcun
msgid "Stock items cannot be located into structural stock locations!"
msgstr "Gli articoli di magazzino non possono essere ubicati in posizioni di magazzino strutturali!"
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr "Non è possibile creare un elemento di magazzino per articoli virtuali"
@@ -8653,7 +8687,7 @@ msgstr "Seleziona un fornitore articolo corrispondente per questo elemento di ma
msgid "Where is this stock item located?"
msgstr "Dove si trova questo articolo di magazzino?"
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr "Imballaggio di questo articolo di magazzino è collocato in"
@@ -8665,7 +8699,7 @@ msgstr "Questo elemento è stato installato su un altro elemento?"
msgid "Serial number for this item"
msgstr "Numero di serie per questo elemento"
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr "Codice lotto per questo elemento di magazzino"
@@ -8742,249 +8776,257 @@ msgstr "I numeri di serie devono essere numeri interi"
msgid "Quantity does not match serial numbers"
msgstr "La quantità non corrisponde ai numeri di serie"
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr "Numeri di serie già esistenti"
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr "L'elemento di magazzino è stato assegnato a un ordine di vendita"
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr "L'elemento di magazzino è installato in un altro elemento"
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr "L'elemento di magazzino contiene altri elementi"
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr "L'elemento di magazzino è stato assegnato a un cliente"
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr "L'elemento di magazzino è attualmente in produzione"
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr "Il magazzino serializzato non può essere unito"
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr "Duplica elementi di magazzino"
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr "Gli elementi di magazzino devono riferirsi allo stesso articolo"
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr "Gli elementi di magazzino devono riferirsi allo stesso articolo fornitore"
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr "I codici di stato dello stock devono corrispondere"
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Le giacenze non possono essere spostate perché non disponibili"
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr "Note d'ingresso"
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr "Il valore deve essere fornito per questo test"
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr "L'allegato deve essere caricato per questo test"
-#: stock/models.py:2344
-msgid "Test name"
-msgstr "Nome Test"
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr "Risultato Test"
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr "Test valore output"
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr "Risultato della prova allegato"
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr "Note del test"
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr "Il numero di serie è troppo grande"
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr "Inserisci il numero di elementi di magazzino da serializzare"
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr "La quantità non deve superare la quantità disponibile ({q})"
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr "Inserisci i numeri di serie per i nuovi elementi"
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr "Posizione magazzino di destinazione"
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr "Note opzionali elemento"
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr "Numeri di serie non possono essere assegnati a questo articolo"
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr "Seleziona elementi di magazzino da installare"
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr "Aggiungi nota di transazione (opzionale)"
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr "Elemento di magazzino non disponibile"
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr "L'articolo selezionato non è nella Fattura dei Materiali"
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr "Posizione di destinazione per gli elementi disinstallati"
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr "Seleziona l'articolo in cui convertire l'elemento di magazzino"
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr "L'articolo selezionato non è una valida opzione per la conversione"
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr "Posizione di destinazione per l'elemento restituito"
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr "L'articolo deve essere vendibile"
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr "L'elemento è assegnato a un ordine di vendita"
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr "Elemento assegnato a un ordine di costruzione"
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr "Cliente a cui assegnare elementi di magazzino"
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr "L'azienda selezionata non è un cliente"
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr "Note sull'assegnazione delle scorte"
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr "Deve essere fornito un elenco degli elementi di magazzino"
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr "Note di fusione di magazzino"
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr "Consenti fornitori non corrispondenti"
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr "Consenti di unire gli elementi di magazzino che hanno fornitori diversi"
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr "Consenti stato non corrispondente"
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr "Consenti di unire gli elementi di magazzino con diversi codici di stato"
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr "Devono essere riforniti almeno due elementi in magazzino"
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr "Valore di chiave primaria StockItem"
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr "Note sugli spostamenti di magazzino"
@@ -9009,7 +9051,7 @@ msgstr "Dati di Test"
msgid "Test Report"
msgstr "Rapporto del Test"
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr "Elimina Dati di Test"
@@ -9025,15 +9067,15 @@ msgstr "Note Elemento di magazzino"
msgid "Installed Stock Items"
msgstr "Elementi di magazzino installati"
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr "Installa Elemento Magazzino"
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr "Elimina tutti i risultati del test per questo elemento di magazzino"
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr "Azioni adeguamento giacenza"
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr "Conta giacenza"
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr "Aggiungi giacenza"
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr "Rimuovi giacenza"
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr "Serializza magazzino"
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr "Trasferisci giacenza"
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr "Assegna al cliente"
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr "Nessun inventario eseguito"
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr "Nuova Posizione"
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr "Home Page"
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr "Conferma l'indirizzo e-mail"
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr "Si prega di confermare che %(email)s è un indirizzo email per l'utente %(user_display)s."
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "Conferma"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr "Clicca il seguente link per visualizzare questo articolo"
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr "Quantità minima"
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr "Esistono errori nel modulo"
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po
index a54c926820a5..6284491894b1 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:42\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Language: ja_JP\n"
@@ -51,18 +51,18 @@ msgstr "エラーの詳細は管理者パネルで確認できます"
msgid "Enter date"
msgstr "日付を入力する"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "日付を入力する"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "メモ"
@@ -127,42 +127,42 @@ msgstr "指定されたメールドメインは承認されていません。"
msgid "Registration is disabled."
msgstr ""
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "数量コードが無効です"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "シリアル番号は空です"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr ""
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr ""
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr ""
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "シリアル番号が見つかりません"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "この値からHTMLタグを削除"
@@ -386,7 +386,7 @@ msgstr "ファイルがありません"
msgid "Missing external link"
msgstr "外部リンクが見つかりません。"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "添付ファイル"
msgid "Select file to attach"
msgstr "添付ファイルを選択"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "コメント:"
msgid "File comment"
msgstr "ファイルコメント"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "ユーザー"
@@ -474,9 +474,9 @@ msgstr ""
msgid "Invalid choice"
msgstr "無効な選択です"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "無効な選択です"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "お名前"
@@ -500,8 +500,8 @@ msgstr "お名前"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "お名前"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "お名前"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "説明"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "親"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr ""
@@ -576,104 +576,104 @@ msgstr ""
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "有効な数字でなければなりません"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr ""
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "ファイル名"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "無効な値です。"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "データファイル"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "アップロードするファイルを選択"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "サポートされていないファイル形式"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "ファイルサイズが大きすぎます"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "ファイルに列が見つかりません"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "ファイルにデータ行がみつかりません"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "データが入力されていません"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "データ列が指定されていません"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "必須の列がありません: {name}"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "{col} 列が重複しています。"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "外部画像ファイルのURL"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "外部URLからの画像ダウンロードは許可されていません"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "バックグラウンドワーカーのチェックに失敗しました"
@@ -813,7 +813,7 @@ msgstr "親アイテムから分割する"
msgid "Split child item"
msgstr "子項目を分割"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "商品在庫をマージしました"
@@ -833,7 +833,7 @@ msgstr "組立注文の出力が完了しました"
msgid "Build order output rejected"
msgstr ""
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr ""
@@ -933,14 +933,14 @@ msgstr "InvenTree について"
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr ""
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr ""
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "組立注文"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr ""
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr ""
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr ""
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "パーツ"
@@ -1099,7 +1099,7 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "組立状況"
msgid "Build status code"
msgstr ""
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr ""
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr ""
@@ -1258,27 +1258,32 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr ""
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr ""
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr ""
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr ""
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "数量"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr ""
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "在庫商品"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr ""
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr ""
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr ""
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "シリアル番号"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr ""
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr ""
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "ステータス"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr "組立ライン"
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr ""
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr ""
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr ""
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr ""
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr ""
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr "外部URLからの画像ダウンロードを許可する"
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr "外部URL画像の最大サイズ"
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr "テンプレート"
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr "パーツはデフォルトのテンプレートです"
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr "アセンブリ"
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr "パーツはデフォルトで他のコンポーネントから組み立てることができます"
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr "コンポーネント"
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr "パーツはデフォルトでサブコンポーネントとして使用できます"
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr "購入可能"
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr "パーツはデフォルトで購入可能です"
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr "販売可能"
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr "パーツはデフォルトで販売可能です"
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr "追跡可能"
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr "パーツはデフォルトで追跡可能です"
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr ""
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr "デバッグモード"
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr "シリアル番号を自動入力"
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr "メールアドレスは必須です"
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr "非アクティブな部品を非表示"
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr "購読中の部品を表示"
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr "購読中のカテゴリを表示"
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr "メッセージ ID:"
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr ""
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr ""
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
@@ -3953,7 +3967,7 @@ msgstr ""
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr ""
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr ""
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr ""
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr "仕入先"
msgid "Select supplier"
msgstr ""
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr ""
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr ""
@@ -4199,13 +4213,13 @@ msgstr ""
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr "顧客"
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr ""
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr "在庫商品"
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr ""
@@ -4809,7 +4823,7 @@ msgstr ""
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr ""
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr "購入金額"
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr ""
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr ""
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr "パーツ"
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "パーツカテゴリ"
@@ -5919,7 +5937,7 @@ msgstr "パーツカテゴリ"
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr ""
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr ""
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr ""
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr ""
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr "カテゴリを選択"
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr "在庫"
@@ -7448,7 +7482,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr ""
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr "シリアル番号が既に存在します"
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr "シリアル番号が大きすぎます"
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr "パーツは販売可能でなければなりません"
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr ""
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "確認"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr "このパーツを表示するには、次のリンクをクリックしてください"
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr "最小在庫"
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/ko/LC_MESSAGES/django.po b/InvenTree/locale/ko/LC_MESSAGES/django.po
index 589a5602d82a..43cae676098c 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Language: ko_KR\n"
@@ -51,18 +51,18 @@ msgstr "오류 세부 정보는 관리자 패널에서 찾을 수 있습니다."
msgid "Enter date"
msgstr "날짜 입력"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "날짜 입력"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "메모"
@@ -127,42 +127,42 @@ msgstr ""
msgid "Registration is disabled."
msgstr ""
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr ""
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr ""
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr ""
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr ""
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr ""
@@ -386,7 +386,7 @@ msgstr "존재하지 않는 파일"
msgid "Missing external link"
msgstr "존재하지 않는 외부 링크"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "첨부파일"
msgid "Select file to attach"
msgstr "첨부할 파일을 선택하세요"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr ""
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "사용자"
@@ -474,9 +474,9 @@ msgstr ""
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr ""
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "이름"
@@ -500,8 +500,8 @@ msgstr "이름"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "이름"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "이름"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "설명"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr ""
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr ""
@@ -576,104 +576,104 @@ msgstr ""
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "유효한 숫자여야 합니다"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr ""
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "파일명"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "지원하지 않는 파일 형식"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "파일이 너무 큽니다"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "파일에서 발견된 세로열 없음."
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "파일에서 발견된 가로열 없음"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "데이터 가로열이 제공되지 않음"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "데이터 세로열이 제공되지 않음"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "사라진 필수 세로열: {name}"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "원격 이미지 파일의 URL"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "원격 URL 에서 이미지 다운로드가 활성화되지 않음"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Background worker 확인 실패"
@@ -813,7 +813,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr ""
@@ -833,7 +833,7 @@ msgstr ""
msgid "Build order output rejected"
msgstr ""
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr ""
@@ -933,14 +933,14 @@ msgstr ""
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr ""
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr ""
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr ""
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr ""
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr ""
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr ""
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr ""
@@ -1099,7 +1099,7 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr ""
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr ""
@@ -1258,27 +1258,32 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr "수량 값은 0보다 커야 합니다"
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr ""
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr ""
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr ""
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr ""
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "수량"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr ""
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr ""
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr ""
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr ""
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr ""
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "일련번호"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr ""
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr "위치"
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "상태"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr ""
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr ""
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr ""
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr ""
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr "재시작 필요"
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr "회사명"
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr "기본 통화"
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr "URL에서 다운로드"
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "바코드 지원"
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr ""
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr "구입 가능"
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr "판매 가능"
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr ""
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr "디버그 모드"
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr "페이지 크기"
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr "PDF 보고서 기본 페이지 크기"
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr "SSO 활성화"
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr "로그인 페이지에서 SSO 활성화"
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr "이메일 필요"
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr "두 번 보내기"
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "작성자"
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr "이미지"
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr "회사"
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
@@ -3953,7 +3967,7 @@ msgstr ""
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr ""
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr ""
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr ""
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr ""
msgid "Select supplier"
msgstr ""
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr ""
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr ""
@@ -4199,13 +4213,13 @@ msgstr ""
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr "고객"
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr ""
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr ""
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr ""
@@ -4809,7 +4823,7 @@ msgstr ""
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr ""
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr ""
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr ""
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr ""
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr ""
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -5919,7 +5937,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr ""
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr ""
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr ""
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr ""
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr "데이터"
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr "이미지 복사"
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -7448,7 +7482,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr ""
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr "일련번호가 이미 존재합니다"
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr ""
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr "홈페이지"
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "확인"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/nl/LC_MESSAGES/django.po b/InvenTree/locale/nl/LC_MESSAGES/django.po
index 52de943c16db..98ce96b53782 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Language: nl_NL\n"
@@ -51,18 +51,18 @@ msgstr "Error details kunnen worden gevonden in het admin scherm"
msgid "Enter date"
msgstr "Voer datum in"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Voer datum in"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Opmerkingen"
@@ -127,42 +127,42 @@ msgstr "Het ingevoerde e-maildomein is niet goedgekeurd."
msgid "Registration is disabled."
msgstr "Registratie is uitgeschakeld."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Ongeldige hoeveelheid ingevoerd"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Leeg serienummer"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Duplicaat serienummer"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr ""
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr ""
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Geen serienummers gevonden"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Verwijder HTML tags van deze waarde"
@@ -386,7 +386,7 @@ msgstr "Ontbrekend bestand"
msgid "Missing external link"
msgstr "Externe link ontbreekt"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Bijlage"
msgid "Select file to attach"
msgstr "Bestand als bijlage selecteren"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Opmerking"
msgid "File comment"
msgstr "Bestand opmerking"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Gebruiker"
@@ -474,9 +474,9 @@ msgstr "Dubbele namen kunnen niet bestaan onder hetzelfde bovenliggende object"
msgid "Invalid choice"
msgstr "Ongeldige keuze"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Ongeldige keuze"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Naam"
@@ -500,8 +500,8 @@ msgstr "Naam"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Naam"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Naam"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Omschrijving"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "bovenliggende"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Pad"
@@ -576,104 +576,104 @@ msgstr "Serverfout"
msgid "An error has been logged by the server."
msgstr "Er is een fout gelogd door de server."
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Moet een geldig nummer zijn"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Valuta"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr "Selecteer valuta uit beschikbare opties"
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Bestandsnaam"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Ongeldige waarde"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "Data bestand"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Selecteer een bestand om te uploaden"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Niet ondersteund bestandstype"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "Bestand is te groot"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "Geen kolommen gevonden in het bestand"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "Geen data rijen gevonden in dit bestand"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Geen data rijen opgegeven"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Geen gegevenskolommen opgegeven"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Verplichte kolom ontbreekt: '{name}'"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Dubbele kolom: '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "URL van extern afbeeldingsbestand"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "Afbeeldingen van externe URL downloaden is niet ingeschakeld"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Achtergrondwerker check is gefaald"
@@ -813,7 +813,7 @@ msgstr "Splits van bovenliggend item"
msgid "Split child item"
msgstr "Splits onderliggende item"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Samengevoegde voorraadartikelen"
@@ -833,7 +833,7 @@ msgstr "Product voltooid"
msgid "Build order output rejected"
msgstr "Build order uitvoer afgewezen"
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr "Verbruikt door productieorder"
@@ -933,14 +933,14 @@ msgstr "Over InvenTree"
msgid "Build must be cancelled before it can be deleted"
msgstr "Productie moet geannuleerd worden voordat het kan worden verwijderd"
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr "Verbruiksartikelen"
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr "Toegewezen"
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr "Beschikbaar"
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Productieorder"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "Productieorderreferentie"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "Productieorder waar deze productie aan is toegewezen"
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "Productieorder waar deze productie aan is toegewezen"
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "Productieorder waar deze productie aan is toegewezen"
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Onderdeel"
@@ -1099,7 +1099,7 @@ msgstr "Verkooporder Referentie"
msgid "SalesOrder to which this build is allocated"
msgstr "Verkooporder waar deze productie aan is toegewezen"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "Productiestatus"
msgid "Build status code"
msgstr "Productiestatuscode"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "Batchcode"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "Batchcode voor deze productieuitvoer"
@@ -1258,27 +1258,32 @@ msgstr "Productie uitvoer is al voltooid"
msgid "Build output does not match Build Order"
msgstr "Productuitvoer komt niet overeen met de Productieorder"
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr "Hoeveelheid moet groter zijn dan nul"
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr "Hoeveelheid kan niet groter zijn dan aantal"
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr "Bouw object"
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr "Bouw object"
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr "Bouw object"
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr "Bouw object"
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "Hoeveelheid"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr "Vereiste hoeveelheid voor bouwopdracht"
-#: build/models.py:1373
+#: build/models.py:1378
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:1382
+#: build/models.py:1387
#, 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:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr "Voorraad item is te veel toegewezen"
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr "Toewijzing hoeveelheid moet groter zijn dan nul"
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr "Hoeveelheid moet 1 zijn voor geserialiseerde voorraad"
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr "Geselecteerde voorraadartikelen komen niet overeen met de BOM-regel"
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr "Geselecteerde voorraadartikelen komen niet overeen met de BOM-regel"
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "Voorraadartikel"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr "Bron voorraadartikel"
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr "Voorraad hoeveelheid toe te wijzen aan productie"
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr "Installeren in"
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr "Bestemming voorraadartikel"
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr "Productieuitvoer"
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr "Productieuitvoer komt niet overeen met de bovenliggende productie"
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr "Uitvoeronderdeel komt niet overeen met productieorderonderdeel"
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr "Deze productieuitvoer is al voltooid"
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr "Deze productieuitvoer is niet volledig toegewezen"
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr "Voer hoeveelheid in voor productie uitvoer"
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr "Hoeveelheid als geheel getal vereist voor traceerbare onderdelen"
-#: build/serializers.py:271
+#: build/serializers.py:272
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:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "Serienummers"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr "Voer serienummers in voor productieuitvoeren"
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr "Serienummers automatisch toewijzen"
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Vereiste artikelen automatisch toewijzen met overeenkomende serienummers"
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr "De volgende serienummers bestaan al of zijn ongeldig"
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr "Een lijst van productieuitvoeren moet worden verstrekt"
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr "Een lijst van productieuitvoeren moet worden verstrekt"
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr "Locatie"
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr "Voorraadlocatie voor geannuleerde outputs"
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr "Toewijzingen weggooien"
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr "Verwijder alle voorraadtoewijzingen voor geannuleerde outputs"
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr "Reden voor annulering van bouworder(s)"
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr "Locatie van voltooide productieuitvoeren"
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "Status"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr "Incomplete Toewijzing Accepteren"
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr "Voltooi de uitvoer als de voorraad niet volledig is toegewezen"
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr "Toegewezen Voorraad Verwijderen"
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr "Verminder alle voorraad die al is toegewezen aan deze productie"
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr "Verwijder Incomplete Uitvoeren"
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr "Verwijder alle productieuitvoeren die niet zijn voltooid"
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr "Niet toegestaan"
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr "Accepteer zoals geconsumeerd onder deze bouwopdracht"
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr "De-alloceren voordat deze bouwopdracht voltooid wordt"
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr "Overgealloceerde voorraad"
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr "Hoe wilt u omgaan met extra voorraaditems toegewezen aan de bouworder"
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr "Sommige voorraadartikelen zijn overalloceerd"
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr "Accepteer Niet-toegewezen"
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr "Accepteer dat voorraadartikelen niet volledig zijn toegewezen aan deze productieorder"
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr "Vereiste voorraad is niet volledig toegewezen"
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr "Accepteer Onvolledig"
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr "Accepteer dat het vereist aantal productieuitvoeren niet is voltooid"
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr "Vereiste productiehoeveelheid is voltooid"
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr "Productieorder heeft onvolledige uitvoeren"
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr "Productielijn"
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr "Productieuitvoer"
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr "Productieuitvoer moet naar dezelfde productie wijzen"
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr "Bouw lijn-item"
-#: build/serializers.py:790
+#: build/serializers.py:802
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:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr "Artikel moet op voorraad zijn"
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Beschikbare hoeveelheid ({q}) overschreden"
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr "Productieuitvoer moet worden opgegeven voor de toewijzing van gevolgde onderdelen"
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr "Productieuitvoer kan niet worden gespecificeerd voor de toewijzing van niet gevolgde onderdelen"
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr "Allocaties voor artikelen moeten worden opgegeven"
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Voorraadlocatie waar onderdelen afkomstig zijn (laat leeg om van elke locatie te nemen)"
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr "Locatie uitsluiten"
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr "Voorraadartikelen van deze geselecteerde locatie uitsluiten"
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr "Uitwisselbare voorraad"
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Voorraadartikelen op meerdere locaties kunnen uitwisselbaar worden gebruikt"
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr "Vervangende Voorraad"
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr "Toewijzing van vervangende onderdelen toestaan"
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr "Optionele Items"
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr "Alloceer optionele BOM items om bestelling te bouwen"
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr "Stuklijstartikel"
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr "In bestelling"
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr "Voltooide Uitvoeren"
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr "Verkooporder"
@@ -1908,10 +1913,10 @@ msgstr "Toegewezen Onderdelen"
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr "Ongeldige domeinnaam: {domain}"
msgid "No plugin"
msgstr "Geen plug-in gevonden"
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr "Opnieuw opstarten vereist"
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr "Een instelling is gewijzigd waarvoor een herstart van de server vereist is"
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr "Migraties in behandeling"
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr "ID Serverinstantie"
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr "Stringbeschrijving voor de server instantie"
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr "Gebruik de instantie naam"
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr "Gebruik de naam van de instantie in de titelbalk"
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr "Tonen `over` beperken"
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr "Toon de `over` modal alleen aan superusers"
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr "Bedrijfsnaam"
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr "Interne bedrijfsnaam"
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr "Basis-URL"
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr "Basis URL voor serverinstantie"
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr "Standaard Valuta"
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr "Selecteer basisvaluta voor de berekening van prijzen"
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr "dagen"
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr "Download van URL"
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr "Download van afbeeldingen en bestanden vanaf een externe URL toestaan"
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr "Download limiet"
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr "Maximale downloadgrootte voor externe afbeelding"
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr "User-agent gebruikt om te downloaden van URL"
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr "Sta toe om de user-agent te overschrijven die gebruikt wordt om afbeeldingen en bestanden van externe URL te downloaden (laat leeg voor de standaard)"
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr "Bevestiging vereist"
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr "Vereis expliciete bevestiging van de gebruiker voor bepaalde actie."
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr "Boomstructuur Diepte"
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr "Standaard diepte voor treeview. Diepere niveaus kunnen geladen worden wanneer ze nodig zijn."
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr "Interval voor update"
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr "Hoe vaak te controleren op updates (nul om uit te schakelen)"
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr "Automatische backup"
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr "Automatische back-up van database- en mediabestanden inschakelen"
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr "Automatische backup interval"
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr "Geef het aantal dagen op tussen geautomatiseerde backup"
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr "Interval Taak Verwijderen"
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr "Resultaten van achtergrondtaken worden verwijderd na het opgegeven aantal dagen"
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr "Error Log Verwijderings Interval"
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr "Resultaten van achtergrondtaken worden verwijderd na het opgegeven aantal dagen"
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr "Interval Verwijderen Notificatie"
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr "Meldingen van gebruikers worden verwijderd na het opgegeven aantal dagen"
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Streepjescodeondersteuning"
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr "Barcode Invoer Vertraging"
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr "Barcode invoerverwerking vertraging"
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr "Barcode Webcam Ondersteuning"
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr "Barcode via webcam scannen in browser toestaan"
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr "Herzieningen onderdeel"
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr "Revisieveld voor onderdeel inschakelen"
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr "IPN Regex"
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr "Regulier expressiepatroon voor het overeenkomende Onderdeel IPN"
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr "Duplicaat IPN toestaan"
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr "Toestaan dat meerdere onderdelen dezelfde IPN gebruiken"
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr "Bewerken IPN toestaan"
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr "Sta het wijzigen van de IPN toe tijdens het bewerken van een onderdeel"
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr "Kopieer Onderdeel Stuklijstgegevens"
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr "Kopieer standaard stuklijstgegevens bij het dupliceren van een onderdeel"
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr "Kopieer Onderdeel Parametergegevens"
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr "Parametergegevens standaard kopiëren bij het dupliceren van een onderdeel"
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr "Kopieer Onderdeel Testdata"
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr "Testdata standaard kopiëren bij het dupliceren van een onderdeel"
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr "Kopiëer Categorieparameter Sjablonen"
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr "Kopieer categorieparameter sjablonen bij het aanmaken van een onderdeel"
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr "Sjabloon"
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr "Onderdelen zijn standaard sjablonen"
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr "Samenstelling"
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr "Onderdelen kunnen standaard vanuit andere componenten worden samengesteld"
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr "Component"
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr "Onderdelen kunnen standaard worden gebruikt als subcomponenten"
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr "Koopbaar"
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr "Onderdelen kunnen standaard gekocht worden"
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr "Verkoopbaar"
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr "Onderdelen kunnen standaard verkocht worden"
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr "Volgbaar"
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr "Onderdelen kunnen standaard gevolgd worden"
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr "Virtueel"
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr "Onderdelen zijn standaard virtueel"
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr "Toon Import in Weergaven"
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr "Toon de importwizard in sommige onderdelenweergaven"
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr "Verwante onderdelen tonen"
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr "Verwante onderdelen voor een onderdeel tonen"
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr "Initiële voorraadgegevens"
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr "Aanmaken van eerste voorraad toestaan bij het toevoegen van een nieuw onderdeel"
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr "Initiële leveranciergegevens"
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr "Aanmaken van eerste leveranciersgegevens toestaan bij het toevoegen van een nieuw onderdeel"
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr "Onderdelennaam Weergaveopmaak"
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr "Opmaak om de onderdeelnaam weer te geven"
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr "Standaardicoon voor onderdeel catagorie"
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr "Standaardicoon voor onderdeel catagorie (leeg betekent geen pictogram)"
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr "Forceer Parameter Eenheden"
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr "Als er eenheden worden opgegeven, moeten parameterwaarden overeenkomen met de opgegeven eenheden"
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr "Minimaal aantal prijs decimalen"
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr "Minimaal aantal decimalen om weer te geven bij het weergeven van prijsgegevens"
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr "Maximum prijs decimalen"
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr "Maximum aantal decimalen om weer te geven bij het weergeven van prijsgegevens"
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr "Gebruik leveranciersprijzen"
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr "Prijsvoordelen leveranciers opnemen in de totale prijsberekening"
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr "Aankoopgeschiedenis overschrijven"
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr "Historische order prijzen overschrijven de prijzen van de leverancier"
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr "Gebruik voorraaditem prijzen"
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr "Gebruik prijzen van handmatig ingevoerde voorraadgegevens voor prijsberekeningen"
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr "Voorraad artikelprijs leeftijd"
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr "Voorraaditems ouder dan dit aantal dagen uitsluiten van prijsberekeningen"
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr "Gebruik variantprijzen"
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr "Variantenprijzen opnemen in de totale prijsberekening"
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr "Alleen actieve varianten"
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr "Gebruik alleen actieve variantonderdelen voor het berekenen van variantprijzen"
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr "Prijzen Herbouw interval"
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr "Aantal dagen voordat de prijzen voor onderdelen automatisch worden bijgewerkt"
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr "Interne Prijzen"
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr "Inschakelen van interne prijzen voor onderdelen"
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr "Interne prijs overschrijven"
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr "Indien beschikbaar, interne prijzen overschrijven berekeningen van prijsbereik"
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr "Printen van labels Inschakelen"
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr "Printen van labels via de webinterface inschakelen"
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr "Label Afbeelding DPI"
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr "DPI resolutie bij het genereren van afbeelginsbestanden voor label printer plugins"
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr "Activeer Rapportages"
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr "Activeer het genereren van rapporten"
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr "Foutopsporingsmodus"
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr "Rapporten genereren in debug modus (HTML uitvoer)"
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr "Paginagrootte"
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr "Standaard paginagrootte voor PDF rapporten"
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr "Activeer Testrapporten"
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr "Activeer het genereren van testrapporten"
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr "Testrapporten Toevoegen"
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr "Bij het afdrukken van een Testrapport, voeg een kopie van het Testrapport toe aan het bijbehorende Voorraadartikel"
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr "Globaal unieke serienummers"
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr "Serienummers voor voorraaditems moeten globaal uniek zijn"
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr "Serienummers automatisch invullen"
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr "Automatisch invullen van serienummer in formulieren"
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr "Verwijder uitgeputte voorraad"
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr "Bepaalt standaard gedrag wanneer een voorraaditem is uitgeput"
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr "Batchcode Sjabloon"
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr "Sjabloon voor het genereren van standaard batchcodes voor voorraadartikelen"
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr "Verlopen Voorraad"
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr "Verlopen voorraad functionaliteit inschakelen"
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr "Verkoop Verlopen Voorraad"
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr "Verkoop verlopen voorraad toestaan"
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr "Voorraad Vervaltijd"
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr "Aantal dagen voordat voorraadartikelen als verouderd worden beschouwd voor ze verlopen"
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr "Produceer Verlopen Voorraad"
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr "Sta productie met verlopen voorraad toe"
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr "Voorraad Eigenaar Toezicht"
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr "Eigenaarstoezicht over voorraadlocaties en items inschakelen"
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr "Voorraadlocatie standaard icoon"
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr "Standaard locatie pictogram (leeg betekent geen icoon)"
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr "Geïnstalleerde voorraad items weergeven"
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr "Geïnstalleerde voorraadartikelen in voorraadtabellen tonen"
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr "Productieorderreferentiepatroon"
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr "Vereist patroon voor het genereren van het Bouworderreferentieveld"
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr "Retourorders inschakelen"
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr "Retourorder functionaliteit inschakelen in de gebruikersinterface"
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr "Retourorder referentie patroon"
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr "Verplicht patroon voor het genereren van Retour Order referentie veld"
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr "Bewerk voltooide retourorders"
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr "Bewerken van retourorders toestaan nadat deze zijn voltooid"
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr "Verkooporderreferentiepatroon"
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr "Vereist patroon voor het genereren van het Verkooporderreferentieveld"
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr "Standaard Verzending Verkooporder"
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr "Aanmaken standaard verzending bij verkooporders inschakelen"
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr "Bewerk voltooide verkooporders"
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr "Bewerken van verkooporders toestaan nadat deze zijn verzonden of voltooid"
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr "Inkooporderreferentiepatroon"
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr "Vereist patroon voor het genereren van het Inkooporderreferentieveld"
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr "Bewerk voltooide verkooporders"
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr "Bewerken van inkooporders toestaan nadat deze zijn verzonden of voltooid"
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr "Wachtwoord vergeten functie inschakelen"
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr "Wachtwoord vergeten functie inschakelen op de inlogpagina's"
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr "Registratie inschakelen"
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr "Zelfregistratie voor gebruikers op de inlogpagina's inschakelen"
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr "SSO inschakelen"
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr "SSO inschakelen op de inlogpagina's"
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr "Schakel gebruikersregistratie met SSO in"
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr "Zelfregistratie voor gebruikers middels SSO op de inlogpagina's inschakelen"
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr "E-mailadres verplicht"
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr "Vereis gebruiker om e-mailadres te registreren bij aanmelding"
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr "SSO-gebruikers automatisch invullen"
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Gebruikersdetails van SSO-accountgegevens automatisch invullen"
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr "E-mail twee keer"
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr "Bij inschrijving gebruikers twee keer om hun e-mail vragen"
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr "Wachtwoord tweemaal"
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr "Laat gebruikers twee keer om hun wachtwoord vragen tijdens het aanmelden"
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr "Toegestane domeinen"
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr "Inschrijven beperken tot bepaalde domeinen (komma-gescheiden, beginnend met @)"
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr "Groep bij aanmelding"
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr "Groep waaraan nieuwe gebruikers worden toegewezen bij registratie"
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr "MFA afdwingen"
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr "Gebruikers moeten multifactor-beveiliging gebruiken."
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr "Controleer plugins bij het opstarten"
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr "Controleer of alle plug-ins zijn geïnstalleerd bij het opstarten - inschakelen in container-omgevingen"
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr "Activeer URL-integratie"
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr "Plugins toestaan om URL-routes toe te voegen"
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr "Activeer navigatie integratie"
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr "Plugins toestaan om te integreren in navigatie"
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr "Activeer app integratie"
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr "Activeer plug-ins om apps toe te voegen"
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr "Activeer planning integratie"
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr "Activeer plugin om periodiek taken uit te voeren"
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr "Activeer evenement integratie"
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr "Activeer plugin om op interne evenementen te reageren"
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr "Activeer project codes"
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr "Activeer project codes voor het bijhouden van projecten"
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr "Voorraadcontrole functionaliteit"
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr "Schakel voorraadfunctionaliteit in voor het opnemen van voorraadniveaus en het berekenen van voorraadwaarde"
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr "Externe locaties uitsluiten"
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr "Voorraadartikelen op externe locaties uitsluiten van voorraadberekeningen"
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr "Automatische Voorraadcontrole Periode"
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr "Aantal dagen tussen automatische voorraadopname (ingesteld op nul om uit te schakelen)"
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr "Rapport Verwijdering Interval"
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr "Voorraadrapportage zal worden verwijderd na het opgegeven aantal dagen"
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig"
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr "Inactieve Onderdelen Verbergen"
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr "Verberg inactieve delen bij items op de homepage"
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr "Toon geabonneerde onderdelen"
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr "Toon geabonneerde onderdelen op de homepage"
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr "Toon geabonneerde categorieën"
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr "Toon geabonneerde onderdeel categorieën op de startpagina"
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr "Toon laatste onderdelen"
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr "Toon laatste onderdelen op de startpagina"
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr "Toon niet-gevalideerde BOM's"
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr "Laat BOMs zien die wachten op validatie op de startpagina"
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr "Toon recente voorraadwijzigingen"
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr "Toon recent aangepaste voorraadartikelen op de startpagina"
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr "Toon lage voorraad"
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr "Toon lage voorraad van artikelen op de startpagina"
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr "Toon lege voorraad"
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr "Toon lege voorraad van artikelen op de startpagina"
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr "Toon benodigde voorraad"
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr "Toon benodigde voorraad van artikelen voor productie op de startpagina"
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr "Toon verlopen voorraad"
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr "Toon verlopen voorraad van artikelen op de startpagina"
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr "Toon verouderde voorraad"
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr "Toon verouderde voorraad van artikelen op de startpagina"
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr "Toon openstaande producties"
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr "Toon openstaande producties op de startpagina"
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr "Toon achterstallige productie"
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr "Toon achterstallige producties op de startpagina"
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr "Toon uitstaande PO's"
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr "Toon uitstaande PO's op de startpagina"
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr "Toon achterstallige PO's"
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr "Toon achterstallige PO's op de startpagina"
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr "Toon uitstaande SO's"
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr "Toon uitstaande SO's op de startpagina"
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr "Toon achterstallige SO's"
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr "Toon achterstallige SO's op de startpagina"
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr "Toon in behandeling SO verzendingen"
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr "Toon in behandeling zijnde SO verzendingen op de startpagina"
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr "Nieuws tonen"
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr "Nieuws op de startpagina weergeven"
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr "Inline labelweergave"
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr "PDF-labels in browser weergeven, in plaats van als bestand te downloaden"
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr "Standaard label printer"
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr "Instellen welke label printer standaard moet worden geselecteerd"
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr "Inline rapport weergeven"
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr "PDF-rapporten in de browser weergeven, in plaats van als bestand te downloaden"
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr "Zoek Onderdelen"
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr "Onderdelen weergeven in zoekscherm"
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr "Zoek leveranciersonderdelen"
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr "Leveranciersonderdelen weergeven in zoekscherm"
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr "Fabrikant onderdelen zoeken"
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr "Fabrikant onderdelen weergeven in zoekscherm"
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr "Inactieve Onderdelen Verbergen"
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr "Inactieve verkooporders weglaten in het zoekvenster"
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr "Zoek categorieën"
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr "Toon onderdeelcategorieën in zoekvenster"
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr "Zoek in Voorraad"
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr "Toon voorraad items in zoekvenster"
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr "Verberg niet beschikbare voorraad items"
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr "Voorraadartikelen die niet beschikbaar zijn niet in het zoekvenster weergeven"
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr "Locaties doorzoeken"
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr "Toon voorraadlocaties in zoekvenster"
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr "Zoek bedrijven"
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr "Toon bedrijven in zoekvenster"
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr "Zoek Bouworders"
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr "Toon bouworders in zoekvenster"
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr "Inkooporders Zoeken"
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr "Toon inkooporders in het zoekvenster"
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr "Inactieve Inkooporders Weglaten"
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr "Inactieve inkooporders weglaten in het zoekvenster"
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr "Verkooporders zoeken"
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr "Toon verkooporders in het zoekvenster"
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr "Inactieve Verkooporders Weglaten"
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr "Inactieve verkooporders weglaten in het zoekvenster"
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr "Zoek retourorders"
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr "Toon bouworders in zoekvenster"
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr "Inactieve retourbestellingen weglaten"
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr "Inactieve retourorders uitsluiten in zoekvenster"
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr "Zoekvoorbeeld resultaten"
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr "Aantal resultaten om weer te geven in elk gedeelte van het zoekvenster"
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr "Regex zoeken"
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr "Schakel reguliere expressies in zoekopdrachten in"
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr "Hele woorden zoeken"
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr "Zoekopdrachten geven resultaat voor hele woord overeenkomsten"
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr "Toon hoeveelheid in formulieren"
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr "Hoeveelheid beschikbare onderdelen in sommige formulieren weergeven"
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr "Escape-toets sluit formulieren"
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr "Gebruik de Escape-toets om standaard formulieren te sluiten"
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr "Vaste navigatiebalk"
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr "De navigatiebalk positie is gefixeerd aan de bovenkant van het scherm"
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr "Datum formaat"
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr "Voorkeursindeling voor weergave van datums"
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Onderdeel planning"
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr "Toon informatie voor het plannen van onderdelen"
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr "Voorraadcontrole onderdeel"
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr "Toon voorraadinformatie van onderdeel (als voorraadcontrole functionaliteit is ingeschakeld)"
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr "Tabel tekenreekslengte"
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr "Standaard sjabloon product onderdeel"
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr "Het onderdeellabelsjabloon dat automatisch wordt geselecteerd"
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr "Standaard sjabloon voorraad onderdeel"
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr "Standaard label van voorraadlocatie"
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr "Foutrapportages ontvangen"
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr "Meldingen ontvangen van systeemfouten"
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr "Prijs"
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr "Eindpunt"
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr "Eindpunt waarop deze webhook wordt ontvangen"
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr "Naam van deze webhook"
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr "Naam van deze webhook"
msgid "Active"
msgstr "Actief"
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr "Is deze webhook actief"
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr "Token"
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr "Token voor toegang"
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr "Geheim"
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr "Gedeeld geheim voor HMAC"
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr "Bericht ID"
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr "Host"
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr "Koptekst"
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr "Koptekst van dit bericht"
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr "Berichtinhoud"
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr "Inhoud van dit bericht"
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr "Aan gewerkt"
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr "Id"
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr "Titel"
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr "Gepubliceerd"
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Samenvatting"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr "Gelezen"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr "Afbeelding"
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr "Afbeelding"
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr "Symbool"
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr "Definitie"
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr "Standaardvaluta die gebruikt wordt voor dit bedrijf"
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr "Bedrijf"
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Basis onderdeel"
@@ -3953,7 +3967,7 @@ msgstr "Onderdeel selecteren"
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr "Fabrikant selecteren"
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr "Parameternaam"
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr "Waarde"
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr "Parameterwaarde"
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr "Gekoppeld fabrikant onderdeel moet verwijzen naar hetzelfde basis onderd
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr "Leverancier"
msgid "Select supplier"
msgstr "Leverancier selecteren"
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr "Opmerking"
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr "Minimale kosten (bijv. voorraadkosten)"
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr ""
@@ -4199,13 +4213,13 @@ msgstr ""
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr "Klant"
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr "Leveranciersonderdeel"
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr "Geen leveranciersinformatie beschikbaar"
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr "Voorraadartikelen"
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr "Inkooporder"
@@ -4809,7 +4823,7 @@ msgstr "Inkooporder"
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr "Ontvangen"
msgid "Number of items received"
msgstr "Aantal ontvangen artikelen"
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr "Inkoopprijs"
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr "Gebruiker die deze zending gecontroleerd heeft"
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr "Zending"
@@ -5726,12 +5740,12 @@ msgstr "{part} stukprijs bijgewerkt naar {price}"
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr "{part} stukprijs bijgewerkt naar {price} en aantal naar {qty}"
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr "Onderdeel-id"
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr "Onderdeel naam"
@@ -5743,7 +5757,7 @@ msgstr "Onderdeel omschrijving"
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr "Onderdelen"
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr "Binnenkomende Inkooporder"
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr "Uitgaande Verkooporder"
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr "Geproduceerde voorraad door Productieorder"
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr "Voorraad vereist voor Productieorder"
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr "Totale Voorraad"
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Onderdeel Categorie"
@@ -5919,7 +5937,7 @@ msgstr "Onderdeel Categorieën"
msgid "Default location for parts in this category"
msgstr "Standaard locatie voor onderdelen in deze categorie"
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr "Onderdeel naam"
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr "Datum"
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr ""
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr ""
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr "De template van de parameter moet uniek zijn"
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr "Parameternaam"
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr "Parameter Template"
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr "Parameterwaarde"
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr "Standaard Parameter Waarde"
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr "Geen onderdelen geselecteerd"
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr "Afbeelding kopiëren"
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr "Afbeelding kopiëren van het oorspronkelijke onderdeel"
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr "Parameters kopiëren"
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr "Parameter data kopiëren van het originele onderdeel"
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr "Ongeldige hoeveelheid"
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr "Voorraad"
@@ -7448,7 +7482,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr "Totaal"
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr ""
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr "Voorraadartikel is toegewezen aan een verkooporder"
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr "Artikel is toegewezen aan een verkooporder"
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr "Artikel is toegewezen aan een productieorder"
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr "Voorraad tellen"
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr "Voorraad overzetten"
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr "Nieuwe Locatie"
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr "Startpagina"
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "Bevestigen"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/no/LC_MESSAGES/django.po b/InvenTree/locale/no/LC_MESSAGES/django.po
index 8d14b2be9042..320f6c2a5579 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Norwegian\n"
"Language: no_NO\n"
@@ -51,18 +51,18 @@ msgstr "Feildetaljer kan finnes i admin-panelet"
msgid "Enter date"
msgstr "Oppgi dato"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Oppgi dato"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Notater"
@@ -127,42 +127,42 @@ msgstr "Det oppgitte e-postdomenet er ikke godkjent."
msgid "Registration is disabled."
msgstr "Registrering er deaktivert."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Ugyldig mengde oppgitt"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Tom serienummerstreng"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Duplisert serienummer"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr "Ugyldig gruppesekvens: {group}"
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Gruppesekvens {group} overskrider tillatt antall ({expected_quantity})"
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr "Ugyldig gruppesekvens: {group}"
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Ingen serienummer funnet"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Antall unike serienumre ({len(serials)}) må samsvare med antallet ({expected_quantity})"
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Fjern HTML-tagger fra denne verdien"
@@ -386,7 +386,7 @@ msgstr "Fil mangler"
msgid "Missing external link"
msgstr "Mangler eksternlenke"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Vedlegg"
msgid "Select file to attach"
msgstr "Velg fil å legge ved"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Kommentar"
msgid "File comment"
msgstr "Kommentar til fil"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Bruker"
@@ -474,9 +474,9 @@ msgstr "Duplikatnavn kan ikke eksistere under samme overordnede"
msgid "Invalid choice"
msgstr "Ugyldig valg"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Ugyldig valg"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Navn"
@@ -500,8 +500,8 @@ msgstr "Navn"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Navn"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Navn"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Beskrivelse"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "overkategori"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Sti"
@@ -576,104 +576,104 @@ msgstr "Serverfeil"
msgid "An error has been logged by the server."
msgstr "En feil har blitt logget av serveren."
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Må være et gyldig tall"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Valuta"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr "Velg valuta ut fra tilgjengelige alternativer"
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr "Du har ikke tillatelse til å endre denne brukerrollen."
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr "Bare superbrukere kan opprette nye brukere"
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr "Din konto er opprettet."
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr "Vennligst bruk funksjonen for å tilbakestille passord for å logge inn"
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr "Velkommen til InvenTree"
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Filnavn"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Ugyldig verdi"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "Datafil"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Velg datafil for opplasting"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Filtypen støttes ikke"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "Filen er for stor"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "Ingen kolonner funnet i filen"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "Ingen datarader funnet i fil"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Ingen datarader oppgitt"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Ingen datakolonner angitt"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Mangler påkrevd kolonne: '{name}'"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Dupliaktkolonne: '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr "Eksternt bilde"
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "URLtil ekstern bildefil"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "Nedlasting av bilder fra ekstern URL er ikke aktivert"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Sjekk av bakgrunnsarbeider mislyktes"
@@ -813,7 +813,7 @@ msgstr "Skill ut fra overordnet artikkel"
msgid "Split child item"
msgstr "Skill ut fra underartikkel"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Sammenslåtte lagervarer"
@@ -833,7 +833,7 @@ msgstr "Produksjonsartikkel fullført"
msgid "Build order output rejected"
msgstr "Produksjonsartikkel avvist"
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr "Brukt av produksjonsordre"
@@ -933,14 +933,14 @@ msgstr "Om InvenTree"
msgid "Build must be cancelled before it can be deleted"
msgstr "Produksjonen må avbrytes før den kan slettes"
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr "Forbruksvare"
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr "Tildelt"
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr "Tilgjengelig"
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Produksjonsordre"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "Produksjonsordre-referanse"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "Produksjonsordre som denne produksjonen er tildelt"
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "Produksjonsordre som denne produksjonen er tildelt"
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "Produksjonsordre som denne produksjonen er tildelt"
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Del"
@@ -1099,7 +1099,7 @@ msgstr "Salgsordrereferanse"
msgid "SalesOrder to which this build is allocated"
msgstr "Salgsordren denne produksjonen er tildelt til"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "Produksjonsstatus"
msgid "Build status code"
msgstr "Produksjonsstatuskode"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "Batchkode"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "Batchkode for denne produksjonsartikkelen"
@@ -1258,27 +1258,32 @@ msgstr "Produksjonsartikkelen er allerede fullført"
msgid "Build output does not match Build Order"
msgstr "Produksjonsartikkelen samsvarer ikke med produksjonsordren"
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr "Mengden må være større enn null"
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr "Kvantitet kan ikke være større enn utgangsantallet"
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr "Produksjonsobjekt"
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr "Produksjonsobjekt"
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr "Produksjonsobjekt"
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr "Produksjonsobjekt"
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "Antall"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr "Påkrevd antall for produksjonsordre"
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Produksjonselement må spesifisere en produksjonsartikkel, da master-del er merket som sporbar"
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr "Tildelt antall ({q}) kan ikke overstige tilgjengelig lagerbeholdning ({a})"
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr "Lagervaren er overtildelt"
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr "Tildelingsantall må være større enn null"
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr "Mengden må være 1 for serialisert lagervare"
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr "Valgt lagervare samsvarer ikke med BOM-linjen"
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr "Valgt lagervare samsvarer ikke med BOM-linjen"
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "Lagervare"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr "Kildelagervare"
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr "Lagerantall å tildele til produksjonen"
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr "Monteres i"
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr "Lagervare for montering"
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr "Produksjonsartikkel"
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr "Produksjonsartikkel samsvarer ikke med overordnet produksjon"
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr "Resultatdel samsvarer ikke med produksjonsordredel"
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr "Denne produksjonsartikkelen er allerede fullført"
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr "Denne produksjonsartikkelen er ikke fullt tildelt"
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr "Angi antall for produksjonsartikkel"
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr "Heltallsverdi kreves for sporbare deler"
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr "Heltallsverdi kreves, da stykklisten inneholder sporbare deler"
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "Serienummer"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr "Angi serienummer for produksjonsartikler"
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr "Automatisk tildeling av serienummer"
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Automatisk tildeling av nødvendige artikler med tilsvarende serienummer"
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr "Følgende serienummer finnes allerede eller er ugyldige"
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr "En liste over produksjonsartikler må oppgis"
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr "En liste over produksjonsartikler må oppgis"
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr "Plassering"
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr "Lagerplassering for skrotede produksjonsartikler"
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr "Forkast tildelinger"
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr "Forkast tildelinger fra skrotede produksjonsartikler"
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr "Grunn for skroting av produksjonsartikler"
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr "Plassering for ferdige produksjonsartikler"
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "Status"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr "Godta ufullstendig tildeling"
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr "Fullfør artikler dersom lagerbeholdning ikke er fullt tildelt"
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr "Fjern tildelt lagerbeholdning"
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr "Trekk fra all lagerbeholdning som allerede er tildelt denne produksjonen"
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr "Fjern ufullstendige artikler"
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr "Slett alle produksjonsartikler som ikke er fullført"
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr "Ikke tillatt"
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr "Godta som brukt av denne produksjonsordren"
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr "Fjern tildeling før produksjonsordren fullføres"
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr "Overtildelt lagerbeholdning"
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr "Hvordan vil du håndtere ekstra lagervarer tildelt produksjonsordren"
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr "Noen lagervarer har blitt overtildelt"
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr "Godta ikke tildelt"
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr "Godta at lagervarer ikke er fullt tildelt til denne produksjonsordren"
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr "Nøvendig lagerbeholdning er ikke fullt tildelt"
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr "Godta uferdig"
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr "Godta at nødvendig antall fullførte produksjonsartikler ikke er nådd"
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr "Nødvendig produksjonsmengde er ikke nådd"
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr "Produksjonsordren har uferdige artikler"
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr "Produksjonslinje"
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr "Produksjonsartikkel"
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr "Produksjonsartikkel må peke til samme produksjon"
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr "Produksjonsartikkel"
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr "bom_item.part må peke på den samme delen som produksjonsordren"
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr "Artikkelen må være på lager"
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Tilgjengelig antall ({q}) overskredet"
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr "Produksjonsartikkel må spesifiseres for tildeling av sporede deler"
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr "Produksjonsartikkel kan ikke spesifiseres for tildeling av usporede deler"
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr "Tildelingsartikler må oppgis"
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Lagerplassering hvor deler skal hentes (la stå tomt for å ta fra alle plasseringer)"
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr "Eksluderer plassering"
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr "Ekskluder lagervarer fra denne valgte plasseringen"
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr "Utskiftbar lagerbeholdning"
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Lagervarer ved flere plasseringer kan brukes om hverandre"
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr "Erstatning-lagerbeholdning"
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr "Tilatt tildelling av erstatningsdeler"
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr "Valgfrie artikler"
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr "Tildel valgfrie BOM-artikler til produksjonsordre"
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr "BOM-artikkel"
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr "Tildelt lagerbeholdning"
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr "I bestilling"
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr "I produksjon"
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr "Fullførte byggeresultater"
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr "Salgsordre"
@@ -1908,10 +1913,10 @@ msgstr "Tildelte deler"
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr "Ugyldig domenenavn: {domain}"
msgid "No plugin"
msgstr "Ingen programtillegg"
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr "Omstart kreves"
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr "En innstilling har blitt endret som krever en omstart av serveren"
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr "Ventende migrasjoner"
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr "Antall ventende databasemigreringer"
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr "Navn på serverinstans"
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr "Strengbeskrivelse for serverinstansen"
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr "Bruk instansnavn"
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr "Bruk instansnavnet på tittellinjen"
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr "Begrens visning av 'om'"
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr "Vis `about`-modal kun til superbrukere"
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr "Firmanavn"
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr "Internt firmanavn"
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr "Base-URL"
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr "Base-URL for serverinstans"
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr "Standardvaluta"
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr "Velg grunnvalutaen for prisberegninger"
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr "Oppdateringsintervall for valuta"
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr "Hvor ofte valutakurser skal oppdateres (sett til null for å deaktiverere)"
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr "dager"
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr "Valutaoppdaterings-plugin"
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr "Valgt valutaoppdaterings-plugin"
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr "Last ned fra URL"
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr "Tillat nedlastning av eksterne bilder og filer fra ekstern URL"
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr "Nedlastingsgrense"
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr "Maksimal tillatt nedlastingsstørrelse for eksternt bilde"
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr "User-Agent brukt for å laste ned fra URL"
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr "Tillat overstyring av User-Agent brukt for å laste ned bilder og filer fra eksterne URLer (lå stå blank for standard)"
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr "Streng URL-validering"
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr "Krev skjemaspesifikasjon ved validering av URLer"
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr "Krev bekreftelse"
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr "Krev eksplisitt brukerbekreftelse for visse handlinger."
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr "Tredybde"
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr "Standard tredybde for trevisning. Dypere nivåer kan lastes inn ved behov."
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr "Intervall for oppdateringssjekk"
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr "Tidsintervall for å se etter oppdateringer(sett til null for å skru av)"
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr "Automatisk sikkerhetskopiering"
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr "Aktiver automatisk sikkerhetskopiering av database og mediafiler"
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr "Automatisk sikkerhetskopieringsintervall"
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr "Angi antall dager mellom automatiske sikkerhetskopieringshendelser"
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr "Slettingsintervall for oppgaver"
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr "Bakgrunnsoppgaveresultater vil bli slettet etter antall angitte dager"
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr "Slettingsintervall for feillogg"
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr "Feilloggene vil bli slettet etter et angitt antall dager"
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr "Slettingsintervall for varsler"
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr "Brukervarsler slettes etter angitt antall dager"
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Strekkodestøtte"
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr "Aktiver støtte for strekkodeleser i webgrensesnittet"
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr "Innlesingsforsinkelse for strekkode"
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr "Tidsforsinkelse for behandling av strekkode"
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr "Støtte for strekkodewebkamera"
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr "Tillat strekkodelesning via webkamera i nettleseren"
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr "Delrevisjoner"
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr "Aktiver revisjonsfeltet for Del"
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr "IPN regex"
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr "Regulært uttrykksmønster for matching av internt delnummer"
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr "Tilat duplikat av internt delnummer"
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr "Tillat flere deler å dele samme interne delnummer"
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr "Tillat redigering av internt delnummer"
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr "Tillat endring av IPN-verdien mens du redigerer en del"
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr "Kopier BOM-data fra del"
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr "Kopier BOM-data som standard når du dupliserer en del"
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr "Kopier parameterdata fra del"
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr "Kopier parameterdata som standard ved duplisering av en del"
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr "Kopier testdata fra del"
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr "Kopier testdata som standard ved duplisering av en del"
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr "Kopier designmaler for kategoriparametere"
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr "Kopier parametermaler for kategori ved oppretting av en del"
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr "Mal"
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr "Deler er maler som standard"
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr "Sammenstilling"
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr "Deler kan settes sammen fra andre komponenter som standard"
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr "Komponent"
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr "Deler kan bli brukt som underkomponenter som standard"
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr "Kjøpbar"
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr "Deler er kjøpbare som standard"
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr "Salgbar"
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr "Deler er salgbare som standard"
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr "Sporbar"
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr "Deler er sporbare som standard"
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr "Virtuelle"
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr "Deler er virtuelle som standard"
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr "Vis import i visninger"
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr "Vis importveiviseren i noen deler visninger"
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr "Vis relaterte deler"
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr "Vis relaterte deler i en del"
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr "Innledende lagerbeholdningsdata"
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr "Tillat oppretting av innledende lagerbeholdning når en ny del opprettes"
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr "Innledende leverandørdata"
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr "Tillat oppretting av innledende leverandørdata når en ny del opprettes"
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr "Visningsformat for delnavn"
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr "Format for å vise delnavnet"
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr "Standardikon for delkategorier"
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr "Standardikon for delkategorier (tomt betyr ingen ikon)"
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr "Tving parameterenheter"
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr "Hvis det er angitt en enhet, skal parameterverdiene samsvare med de angitte enhetene"
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr "Minimum antall desimalplasser for priser"
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr "Minimum antall desimalplasser som skal vises når man gjengir prisdata"
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr "Maksimalt antall desimalplasser for priser"
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr "Maksimalt antall desimalplasser som skal vises når man gjengir prisdata"
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr "Bruk leverandørpriser"
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr "Inkluder leverandørprisbrudd i beregninger av totalpriser"
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr "Innkjøpshistorikkoverstyring"
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr "Historiske innkjøpspriser overstyrer leverandørprisnivåer"
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr "Bruk lagervarepriser"
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr "Bruk priser fra manuelt innlagte lagervarer for prisberegninger"
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr "Lagervare prisalder"
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr "Unnta lagervarer som er eldre enn dette antall dager fra prisberegninger"
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr "Bruk Variantpriser"
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr "Inkluder variantpriser i beregninger av totale priser"
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr "Kun aktive varianter"
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr "Bruk kun aktive variantdeler til beregning av variantprising"
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr "Intervall for rekalkulering av priser"
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr "Antall dager før delpriser blir automatisk oppdatert"
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr "Interne Priser"
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr "Aktiver interne priser for deler"
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr "Intern prisoverstyring"
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr "Hvis tilgjengelig, overstyrer interne priser kalkulering av prisområde"
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr "Aktiver etikettutskrift"
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr "Aktiver utskrift av etiketter fra nettleseren"
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr "Etikettbilde-DPI"
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr "DPI-oppløsning når når det genereres bildefiler for sending til utvidelser for etikettutskrift"
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr "Aktiver Rapporter"
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr "Aktiver generering av rapporter"
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr "Feilsøkingsmodus"
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr "Generer rapporter i feilsøkingsmodus (HTML-output)"
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr "Sidestørrelse"
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr "Standard sidestørrelse for PDF-rapporter"
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr "Aktiver Testrapporter"
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr "Aktiver generering av testrapporter"
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr "Legg ved testrapporter"
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr "Når det skrives ut en Testrapport, legg ved en kopi av Testrapporten på den assosierte Lagervaren"
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr "Globalt Unike Serienummer"
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr "Serienummer for lagervarer må være globalt unike"
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr "Automatisk tildeling av Serienummer"
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr "Aumatisk fyll ut serienummer i skjemaer"
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr "Slett oppbrukt lagerbeholdning"
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr "Bestemmer standard oppførsel når en lagervare er oppbrukt"
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr "Batchkodemal"
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr "Mal for generering av standard batchkoder for lagervarer"
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr "Lagerbeholdning utløper"
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr "Aktiver funksjonalitet for utløp av lagerbeholdning"
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr "Selg utløpt lagerbeholdning"
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr "Tillat salg av utgått lagerbeholdning"
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr "Foreldet lagerbeholdning tidsintervall"
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr "Antall dager før lagervarer er ansett som foreldet før utløp"
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr "Produsér Utløpt Lagerbeholdning"
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr "Tillat produksjon med utløpt lagerbeholdning"
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr "Kontroll over eierskap av lagerbeholdning"
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr "Aktiver eierskap over lagerplasseringer og -varer"
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr "Lagerplassering standard ikon"
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr "Lagerplassering standard ikon (tomt betyr ingen ikon)"
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr "Vis installerte lagervarer"
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr "Vis installerte lagervarer i lagertabeller"
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr "Produksjonsordre-referansemønster"
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr "Nødvendig mønster for å generere Produksjonsordre-referansefeltet"
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr "Aktiver returordrer"
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr "Aktiver returordrefunksjonalitet i brukergrensesnittet"
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr "Returordre-referansemønster"
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr "Påkrevd mønster for å generere returordrereferansefelt"
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr "Rediger fullførte returordrer"
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr "Tillat redigering av returordrer etter de er fullført"
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr "Salgsordre-referansemønster"
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr "Påkrevd mønster for å generere salgsordrereferansefelt"
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr "Salgsordre standard fraktmetode"
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr "Aktiver opprettelse av standard forsendelse med salgsordrer"
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr "Rediger fullførte salgsordrer"
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr "Tillat redigering av salgsordrer etter de har blitt sendt eller fullført"
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr "Referansemønster for innkjøpsordre"
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr "Obligatorisk mønster for generering av referansefelt for innkjøpsordre"
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr "Rediger fullførte innkjøpsordre"
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr "Tillat redigering av innkjøpsordre etter at de har blitt sendt eller fullført"
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr "Autofullfør innkjøpsordrer"
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr "Automatisk merk innkjøpsordre som fullført når alle ordrelinjer er mottatt"
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr "Aktiver passord glemt"
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr "Ativer funskjon for glemt passord på innloggingssidene"
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr "Aktiver registrering"
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr "Aktiver egenregistrerting for brukerer på påloggingssidene"
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr "Aktiver SSO"
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr "Aktiver SSO på innloggingssidene"
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr "Aktiver SSO-registrering"
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr "Aktiver selvregistrering via SSO for brukere på innloggingssiden"
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr "E-postadresse kreves"
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr "Krevt at brukere angir e-post ved registrering"
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr "Auto-utfyll SSO-brukere"
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Fyll automatisk ut brukeropplysninger fra SSO-kontodata"
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr "E-post to ganger"
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr "Spør brukeren om e-post to ganger ved registrering"
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr "Passord to ganger"
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr "Spør brukeren om passord to ganger ved registrering"
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr "Tillatte domener"
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr "Begrens registrering til bestemte domener (kommaseparert, begynner med @)"
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr "Gruppe ved registrering"
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr "Gruppe nye brukere blir tilknyttet ved registrering"
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr "Krev MFA"
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr "Brukere må bruke flerfaktorsikkerhet."
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr "Sjekk utvidelser ved oppstart"
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr "Sjekk at alle utvidelser er installert ved oppstart - aktiver i containermiljøer"
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr "Aktiver URL-integrasjon"
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr "Tillat utvidelser å legge til URL-ruter"
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr "Aktiver navigasjonsintegrasjon"
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr "Tillat utvidelser å integrere mot navigasjon"
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr "Aktiver app-integrasjon"
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr "Tillat utvidelser å legge til apper"
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr "Aktiver tidsplanintegrasjon"
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr "Tillat utvidelser å kjøre planlagte oppgaver"
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr "Aktiver hendelsesintegrasjon"
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr "Tillat utvidelser å reagere på interne hendelser"
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr "Aktiver prosjektkoder"
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr "Aktiver prosjektkoder for å spore prosjekter"
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr "Varetellingsfunksjonalitet"
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr "Aktiver varetellingsfunksjonalitet for å registrere lagernivåer og regne ut lagerverdi"
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr "Ekskluder eksterne plasseringer"
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr "Eksluder lagervarer i eksterne plasseringer fra varetellinger"
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr "Automatisk varetellingsperiode"
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr "Antall dager mellom automatisk varetellingsregistrering (sett til null for å deaktivere)"
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr "Rapportslettingsintervall"
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr "Varetellingsrapporter vil slettes etter angitt antall dager"
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr "Vis brukernes fulle navn"
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr "Vis brukernes fulle navn istedet for brukernavn"
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr "Innstillingsnøkkel (må være unik - ufølsom for store og små bokstaver"
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr "Skjul inaktive elementer"
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr "Skjul inaktive deler i resultater som vises på hjemmesiden"
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr "Vis abonnerte deler"
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr "Vis abonnerte deler på startsiden"
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr "Vis abonnerte kategorier"
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr "Vis abonnerte delkatekorier på startsiden"
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr "Vis nyeste deler"
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr "Vis nyeste deler på startsiden"
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr "Vis uvaliderte stykklister"
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr "Vis stykklister som venter på validering på startsiden"
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr "Vis nylige lagerendringer"
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr "Vis nylig endrede lagervarer på startsiden"
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr "Vis lav lagerbeholdning"
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr "Vis lave lagervarer på startsiden"
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr "Vis tomme lagervarer"
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr "Vis tom lagerbeholdning på startsiden"
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr "Vis nødvendig lagerbeholdning"
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr "Vis lagervarer som trengs for produksjon på startsiden"
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr "Vis utløpt lagerbeholdning"
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr "Vis utløpte lagervarer på startsiden"
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr "Vis foreldet lagerbeholdning"
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr "Vis foreldet lagerbeholdning på startsiden"
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr "Vis ventende produksjoner"
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr "Vi ventende produksjoner på startsiden"
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr "Vis forfalte produksjoner"
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr "Vis forfalte produksjoner på startsiden"
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr "Vis utestående Innkjøpsordrer"
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr "Vis utestående Innkjøpsordrer på startsiden"
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr "Vis forfalte Innkjøpsordrer"
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr "Vis forfalte Innkjøpsordrer på startsiden"
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr "Vis utestående Salgsordrer"
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr "Vis utestående Salgsordrer på startsiden"
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr "Vis forfalte SOer"
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr "Vis forfalte SOer på startsiden"
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr "Vis ventende SO-forsendelser"
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr "Vis ventende SO-forsendelser på startsiden"
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr "Vis Nyheter"
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr "Vis nyheter på startsiden"
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr "Innebygd etikettvisning"
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr "Vis PDF-etiketter i nettleseren fremfor å lastes ned som en fil"
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr "Standard etikettskriver"
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr "Konfigurer hvilken etikettskriver som skal være valgt som standard"
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr "Innebygd rapportvisning"
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr "Vis PDF-rapporter i nettleseren fremfor å lastes ned som en fil"
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr "Søk i Deler"
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr "Vis deler i forhåndsvsningsvinduet for søk"
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr "Søk i Leverandørdeler"
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr "Vis leverandørdeler i forhåndsvisningsvinduet for søk"
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr "Søk i Produsentdeler"
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr "Vis produsentdeler i forhåndsvisningsvinduet for søk"
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr "Skjul Inaktive Deler"
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr "Ekskluder inaktive deler fra forhåndsvisningsvinduet for søk"
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr "Søk i kategorier"
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr "Vis delkategorier i forhåndsvisningsvinduet for søk"
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr "Søk i lagerbeholdning"
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr "Vis lagervarer i forhåndsvisningsvinduet for søk"
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr "Skjul utilgjengelige Lagervarer"
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr "Ekskluder lagervarer som ikke er tilgjengelige fra forhåndsvisningsvinduet for søk"
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr "Søk i Plasseringer"
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr "Vis lagerplasseringer i forhåndsvisningsvinduet for søk"
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr "Søk i Firma"
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr "Vis firma i forhåndsvsningsvinduet for søk"
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr "Søk i Produksjonsordrer"
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr "Vis produksjonsordrer i forhåndsvisningsvinduet for søk"
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr "Søk i Innkjøpsordrer"
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr "Vis innkjøpsordrer i forhåndsvisningsvinduet for søk"
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr "Ekskluder inaktive Innkjøpsordrer"
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr "Ekskluder inaktive innkjøpsordrer fra forhåndsvisningsvinduet for søk"
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr "Søk i Salgsordrer"
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr "Vis salgsordrer i forhåndsvisningsvinduet for søk"
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr "Ekskluder Inaktive Salgsordrer"
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr "Ekskluder inaktive salgsordrer fra forhåndsvisningsvinduet for søk"
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr "Søk i Returordrer"
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr "Vis returordrer i forhåndsvisningsvinduet for søk"
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr "Ekskluder Inaktive Returordrer"
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr "Ekskluder inaktive returordrer fra forhåndsvisningsvinduet for søk"
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr "Forhåndsvisning av søkeresultater"
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr "Antall resultater å vise i hver seksjon av søkeresultatsforhåndsvisningen"
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr "Regex-søk"
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr "Aktiver regulære uttrykk i søkeord"
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr "Helordsøk"
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr "Søk returnerer resultater for treff med hele ord"
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr "Vis antall i skjemaer"
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr "Vis antall tilgjengelige deler i noen skjemaer"
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr "Escape-knappen lukker skjemaer"
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr "Bruk Escape-knappen for å lukke modal-skjemaer"
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr "Fast navigasjonsbar"
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr "Navigasjonsbarens posisjon er fast på toppen av skjermen"
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr "Datoformat"
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr "Foretrukket format for å vise datoer"
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Delplanlegging"
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr "Vis delplanleggingsinformasjon"
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr "Lagertelling for Del"
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr "Vis lagertellingsinformasjon for del (om lagertellingsfunksjonalitet er aktivert)"
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr "Tabellstrenglengde"
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr "Maksimal lengdegrense for tekst vist i tabeller"
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr "Standard etikettmal for del"
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr "Etikettmalen for del som velges automatisk"
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr "Standard etikettmal for lagervare"
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr "Etikettmalen for lagervare som velges automatisk"
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr "Standard etikettmal for lagerplassering"
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr "Etikettmalen for lagerplassering som velges automatisk"
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr "Motta feilrapporter"
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr "Motta varsler om systemfeil"
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr "Antall for prisbrudd"
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr "Antall for prisbrudd"
msgid "Price"
msgstr "Pris"
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr "Enhetspris på spesifisert antall"
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr "Endepunkt"
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr "Endepunktet hvor denne webhooken er mottatt"
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr "Navn for webhooken"
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr "Navn for webhooken"
msgid "Active"
msgstr "Aktiv"
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr "Er webhooken aktiv"
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr "Sjetong"
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr "Nøkkel for tilgang"
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr "Hemmelig"
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr "Delt hemmlighet for HMAC"
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr "Melding ID"
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr "Unik Id for denne meldingen"
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr "Vert"
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr "Verten denne meldingen ble mottatt fra"
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr "Tittel"
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr "Overskrift for denne meldingen"
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr "Brødtekst"
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr "Innholdet i meldingen"
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr "Endepunktet meldingen ble mottatt fra"
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr "Arbeidet med"
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr "Var arbeidet med denne meldingen ferdig?"
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr "Id"
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr "Tittel"
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr "Publisert"
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Forfatter"
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Sammendrag"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr "Les"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr "Er dette nyhetselementet lest?"
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr "Er dette nyhetselementet lest?"
msgid "Image"
msgstr "Bilde"
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr "Bildefil"
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr "Enhetsnavn må være en gyldig identifikator"
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr "Enhetsnavn"
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr "Symbol"
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr "Valgfritt enhetssymbol"
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr "Definisjon"
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr "Enhetsdefinisjon"
@@ -3849,7 +3863,7 @@ msgstr "Standardvaluta brukt for dette firmaet"
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr "Firma"
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr "Lenke til adresseinformasjon (ekstern)"
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Basisdel"
@@ -3953,7 +3967,7 @@ msgstr "Velg del"
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr "Velg produsent"
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr "Parameternavn"
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr "Verdi"
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr "Parameterverdi"
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr "Den sammenkoblede produsentdelen må referere til samme basisdel"
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr "Leverandør"
msgid "Select supplier"
msgstr "Velg leverandør"
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr "Leverandørens lagerbeholdningsenhet"
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr "Leverandørens delbeskrivelse"
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr "Notat"
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr "Minimum betaling (f.eks. lageravgift)"
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr "Emballasje"
@@ -4199,13 +4213,13 @@ msgstr "Slett bilde"
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr "Kunde"
@@ -4463,7 +4477,7 @@ msgstr "Adresser"
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr "Leverandørdel"
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr "Ingen leverandørinformasjon tilgjengelig"
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr "Lagervarer"
@@ -4676,48 +4690,48 @@ msgstr "QR-kode"
msgid "QR code"
msgstr "QR-kode"
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr "Ukjent"
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr "Ingen samsvarende innkjøpsordre funnet"
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr "Innkjøpsordre"
@@ -4809,7 +4823,7 @@ msgstr "Innkjøpsordre"
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr "Returordre"
@@ -5008,9 +5022,9 @@ msgstr "Mottatt"
msgid "Number of items received"
msgstr "Antall enheter mottatt"
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr "Innkjøpspris"
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr "Brukeren som sjekket forsendelsen"
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr "Forsendelse"
@@ -5726,12 +5740,12 @@ msgstr "Oppdaterte {part} enhetspris to {price}"
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr "Oppdaterte {part} enhetspris til {price} og antall til {qty}"
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr "Del-ID"
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr "Delnavn"
@@ -5743,7 +5757,7 @@ msgstr "Delbeskrivelse"
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr "IPN"
@@ -5811,11 +5825,11 @@ msgstr "Minimal kostnad"
msgid "Maximum Cost"
msgstr "Maksimal kostnad"
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr "Overordnet ID"
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr "Overordnet navn"
@@ -5824,7 +5838,7 @@ msgstr "Overordnet navn"
msgid "Category Path"
msgstr "Sti til kategori"
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr "Sti til kategori"
msgid "Parts"
msgstr "Deler"
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr "BOM-nivå"
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr "BOM artikkel-ID"
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr "Overodnet IPN"
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr "Del -IPN"
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr "Minstepris"
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr "Makspris"
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr "Innkommende innkjøpsordre"
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr "Utgående salgsordre"
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr "Lagervarer produsert av en produksjonsordre"
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr "Lagervarer påkrevd for produksjonsordre"
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr "Gyldig"
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr "Godkjenn hele Stykklisten"
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr "Dette alternativet må være valgt"
@@ -5904,7 +5922,7 @@ msgstr "Total lagerbeholdning"
msgid "Input quantity for price calculation"
msgstr "Sett inn antall for prisberegning"
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Delkategori"
@@ -5919,7 +5937,7 @@ msgstr "Delkategorier"
msgid "Default location for parts in this category"
msgstr "Standardplassering for deler i denne kategorien"
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr "Del med dette Navnet, internt delnummer og Revisjon eksisterer allerede.
msgid "Parts cannot be assigned to structural part categories!"
msgstr "Deler kan ikke tilordnes strukturelle delkategorier!"
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr "Delnavn"
@@ -6009,9 +6027,9 @@ msgstr "Delbeskrivelse (valgfritt)"
msgid "Part keywords to improve visibility in search results"
msgstr "Del-nøkkelord for å øke synligheten i søkeresultater"
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr "Total tilgjengelig lagerbeholdning på tidspunkt for varetelling"
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr "Dato"
@@ -6328,556 +6346,572 @@ msgstr "Antall deler dekket av varetellingen"
msgid "User who requested this stocktake report"
msgstr "Bruker som forespurte varetellingsrapporten"
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr "Testmaler kan bare bli opprettet for sporbare deler"
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr "Test med dette navnet finnes allerede for denne delen"
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr "Testnavn"
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr "Angi et navn for testen"
-#: part/models.py:3464
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
+msgstr ""
+
+#: part/models.py:3465
msgid "Test Description"
msgstr "Testbeskrivelse"
-#: part/models.py:3465
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr "Legg inn beskrivelse for denne testen"
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr "Påkrevd"
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr "Er det påkrevd at denne testen bestås?"
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr "Krever verdi"
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr "Krever denne testen en verdi når det legges til et testresultat?"
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr "Krever vedlegg"
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr "Krever denne testen et filvedlegg når du legger inn et testresultat?"
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr "Sjekkboksparameter kan ikke ha enheter"
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr "Sjekkboksparameter kan ikke ha valg"
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr "Valg må være unike"
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr "Navn på parametermal må være unikt"
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr "Parameternavn"
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr "Fysisk enheter for denne parameteren"
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr "Parameterbeskrivelse"
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr "Sjekkboks"
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr "Er dette parameteret en sjekkboks?"
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr "Valg"
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr "Gyldige valg for denne parameteren (kommaseparert)"
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr "Ugyldig valg for parameterverdi"
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr "Overordnet del"
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr "Parametermal"
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr "Data"
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr "Parameterverdi"
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr "Standardverdi"
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr "Standard Parameterverdi"
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr "Del-ID eller delnavn"
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr "Unik del-ID-verdi"
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr "Delens interne delnummerverdi"
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr "Nivå"
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr "BOM-nivå"
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr "Velg overordnet del"
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr "Underordnet del"
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr "Velg del som skal brukes i BOM"
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr "BOM-antall for denne BOM-artikkelen"
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr "Denne BOM-artikkelen er valgfri"
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr "Denne BOM-artikkelen er forbruksvare (den spores ikke i produksjonsordrer)"
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Svinn"
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "Forventet produksjonssvinn (absolutt eller prosent)"
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr "BOM-artikkelreferanse"
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr "BOM-artikkelnotater"
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr "Kontrollsum"
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr "BOM-linje kontrollsum"
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr "Godkjent"
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr "Denne BOM-artikkelen er godkjent"
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr "Arves"
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr "Denne BOM-artikkelen er arvet fra stykkliste for variantdeler"
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr "Tillat Varianter"
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr "Lagervarer for variantdeler kan brukes for denne BOM-artikkelen"
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr "Antall må være heltallsverdi for sporbare deler"
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr "Underordnet del må angis"
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr "BOM-artikkel erstatning"
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr "Erstatningsdel kan ikke være samme som hoveddelen"
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr "Overordnet BOM-artikkel"
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr "Erstatningsdel"
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr "Del 1"
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr "Del 2"
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr "Velg relatert del"
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr "Del-forhold kan ikke opprettes mellom en del og seg selv"
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr "Duplikatforhold eksisterer allerede"
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr "Innkjøpsvaluta for lagervaren"
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr "Ingen deler valgt"
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr "Velg kategori"
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr "Original Del"
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr "Velg original del å duplisere"
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr "Kopier Bilde"
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr "Kopier bilde fra originaldel"
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr "Kopier Stykkliste"
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr "Kopier stykkliste fra original del"
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr "Kopier parametere"
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr "Kopier parameterdata fra originaldel"
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr "Kopier notater"
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr "Kopier notater fra originaldel"
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr "Innledende lagerbeholdning"
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr "Angi initiell lagermengde for denne delen. Hvis antall er null, er ingen lagerbeholdning lagt til."
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr "Innledende lagerplassering"
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr "Angi initiell lagerplasering for denne delen"
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr "Velg leverandør (eller la stå tom for å hoppe over)"
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr "Velg produsent (eller la stå tom for å hoppe over)"
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr "Produsentens delenummer"
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr "Valgt firma er ikke en gyldig leverandør"
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr "Valgt firma er ikke en gyldig produsent"
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr "Produsentdel som matcher dette MPN-et, finnes allerede"
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr "Leverandørdel som matcher denne SKU-en, finnes allerede"
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr "Dupliser del"
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr "Kopier innledende data fra en annen del"
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr "Innledende lagerbeholdning"
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr "Lag en del med innledende lagermengde"
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr "Leverandøropplysninger"
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr "Legg til innledende leverandørinformasjon for denne delen"
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr "Kopier kategoriparametre"
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr "Kopier parametermaler fra valgt delkategori"
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr "Eksisterende bilde"
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr "Filnavn for et eksisterende del-bilde"
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr "Bildefilen finnes ikke"
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr "Begrens lagerbeholdningsrapport til en bestemt del og enhver variant av delen"
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr "Begrens lagerbeholdningsrapport til en bestemt delkategori og alle underkategorier"
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr "Begrens lagerbeholdningsrapport til en bestemt plasering og eventuelle underplasseringer"
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr "Ekskluder ekstern lagerbeholdning"
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr "Ekskluder lagervarer i eksterne lokasjoner"
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr "Generer rapport"
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr "Genererer rapport som inneholder beregnede lagerdata"
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr "Oppdater deler"
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr "Oppdater spesifiserte deler med beregnede lagerbeholdningsdata"
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr "Lagerbeholdningsfunksjonalitet er ikke aktivert"
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr "Overstyr beregnet verdi for minimumspris"
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr "Valuta for minstepris"
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr "Overstyr beregnet verdi for maksimal pris"
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr "Valuta for maksimal pris"
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr "Oppdater"
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr "Oppdater priser for denne delen"
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr "Kan ikke konvertere fra gitte valutaer til {default_currency}"
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr "Minsteprisen kan ikke være større enn maksimal pris"
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr "Maksimal pris kan ikke være mindre enn minstepris"
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr "Velg del å kopiere BOM fra"
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr "Fjern eksisterende data"
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr "Fjern eksisterende BOM-artikler før kopiering"
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr "Inkluder arvede"
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr "Inkluder BOM-artikler som er arvet fra maldeler"
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr "Hopp over ugyldige rader"
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr "Aktiver dette alternativet for å hoppe over ugyldige rader"
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr "Kopier erstatningsdeler"
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr "Kopier erstatningsdeler når BOM-elementer dupliseres"
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr "Nullstill eksisterende BOM"
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr "Fjern eksisterende BOM-artikler før opplastning"
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr "Ingen del-kolonne angitt"
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr "Flere samsvarende deler funnet"
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr "Ingen samsvarende del funnet"
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr "Delen er ikke betegnet som en komponent"
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr "Antall ikke oppgitt"
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr "Ugyldig antall"
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr "Minst en BOM-artikkel kreves"
@@ -7040,7 +7074,7 @@ msgstr "Legg til lagertellingsinformasjon"
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr "Lagertelling"
@@ -7274,7 +7308,7 @@ msgstr "Delen er ikke aktiv"
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr "Inaktiv"
@@ -7402,7 +7436,7 @@ msgstr "Varianter"
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr "Lagerbeholdning"
@@ -7448,7 +7482,7 @@ msgstr "Rediger"
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr "Sist oppdatert"
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr "Metode"
msgid "No author found"
msgstr "Ingen forfatter funnet"
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr "Utvidensen '{p}' er ikke kompatibel med nåværende InvenTree-versjon {v}"
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr "Utvidelsen krever minst versjon {v}"
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr "Utvidelsen krever maks versjon {v}"
@@ -8361,7 +8395,7 @@ msgstr "Total"
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr "Testresultater"
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr "Test"
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr "Resultat"
@@ -8416,7 +8450,7 @@ msgstr "Installerte artikler"
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr "Serienummer"
@@ -8500,48 +8534,48 @@ msgstr "Slett når oppbrukt"
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr "Utløpsdato"
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr "Ekstern plassering"
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr "Del-tre"
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr "Utløpsdato før"
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr "Utløpsdato etter"
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr "Foreldet"
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr "Antall kreves"
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr "Gyldig del må oppgis"
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr "Oppgitt leverandørdel eksisterer ikke"
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr "Leverandørdelen har en pakkestørrelse definert, men flagget \"use_pack_size\" er ikke satt"
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr "Serienumre kan ikke angis for en ikke-sporbar del"
@@ -8582,7 +8616,7 @@ msgstr "Velg eier"
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr "Lagervarer kan ikke knyttes direkte mot en strukturell lagerplassering, men kan knyttes mot underplasseringer."
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr "Ekstern"
@@ -8591,7 +8625,7 @@ msgstr "Ekstern"
msgid "This is an external stock location"
msgstr "Dette er en ekstern lagerplassering"
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr "Plasseringstype"
@@ -8608,7 +8642,7 @@ msgstr "De kan ikke gjøre denne plasseringen strukturell, da noen lagervarer al
msgid "Stock items cannot be located into structural stock locations!"
msgstr "Lagervarer kan ikke plasseres i strukturelle plasseringer!"
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr "Lagervare kan ikke opprettes for virtuelle deler"
@@ -8653,7 +8687,7 @@ msgstr "Velg en tilsvarende leverandørdel for denne lagervaren"
msgid "Where is this stock item located?"
msgstr "Hvor er denne lagervaren plassert?"
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr "Inpakningen denne lagervaren er lagret i"
@@ -8665,7 +8699,7 @@ msgstr "Er denne artikkelen montert i en annen artikkel?"
msgid "Serial number for this item"
msgstr "Serienummer for denne artikkelen"
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr "Batchkode for denne lagervaren"
@@ -8742,249 +8776,257 @@ msgstr "Serienumre må være en liste over tall"
msgid "Quantity does not match serial numbers"
msgstr "Antallet stemmer ikke overens med serienumrene"
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr "Seriernummer eksisterer allerede"
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr "Lagervare har blitt tildelt en salgsordre"
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr "Lagervare er montert i en annen artikkel"
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr "Lagervare inneholder andre artikler"
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr "Lagervare har blitt tildelt til en kunde"
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr "Lagervare er for tiden i produksjon"
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr "Serialisert lagerbeholdning kan ikke slås sammen"
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr "Duplisert lagervare"
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr "Lagervarer må referere til samme del"
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr "Lagervarer må referere til samme leverandørdel"
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr "Lagerstatuskoder må være like"
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Lagervare kan ikke flyttes fordi den ikke er på lager"
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr "Oppføringsnotater"
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr "Verdi må angis for denne testen"
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr "Vedlegg må lastes opp for denne testen"
-#: stock/models.py:2344
-msgid "Test name"
-msgstr "Testnavn"
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr "Testresultat"
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr "Testens verdi"
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr "Vedlegg til testresultat"
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr "Testnotater"
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr "Serienummeret er for høyt"
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr "Bruk pakningsstørrelse når du legger til: antall definert er antall pakker"
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr "Innkjøpspris for denne lagervaren, per enhet eller forpakning"
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr "Angi antall lagervarer som skal serialiseres"
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr "Antall kan ikke overstige tilgjengelig lagerbeholdning ({q})"
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr "Angi serienummer for nye artikler"
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr "Til Lagerplassering"
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr "Valgfritt notatfelt"
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr "Serienummer kan ikke tilordnes denne delen"
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr "Velg lagervare å montere"
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr "Antall å installere"
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr "Angi antallet elementer som skal installeres"
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr "Legg til transaksjonsnotat (valgfritt)"
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr "Antall å installere må være minst 1"
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr "Lagervaren er utilgjengelig"
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr "Valgt del er ikke i stykklisten"
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr "Antall å installere må ikke overskride tilgjengelig antall"
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr "Lagerplassering for den avinstallerte artikkelen"
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr "Velg del å konvertere lagervare til"
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr "Valgt del er ikke et gyldig alternativ for konvertering"
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr "Kan ikke konvertere lagerprodukt med tildelt leverandørdel"
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr "Lagerplassering for returnert artikkel"
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr "Velg lagervarer for å endre status"
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr "Ingen lagervarer valgt"
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr "Delen må være salgbar"
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr "Artikkelen er tildelt en salgsordre"
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr "Artikkelen er tildelt en produksjonsordre"
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr "Kunde å tilordne lagervarer"
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr "Valgt firma er ikke en kunde"
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr "Lagervare-tildelignsnotater"
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr "En liste av lagervarer må oppgis"
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr "Notater om lagersammenslåing"
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr "Tillat forskjellige leverandører"
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr "Tillat lagervarer med forskjellige leverandørdeler å slås sammen"
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr "Tillat forskjellig status"
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr "Tillat lagervarer med forskjellige statuskoder å slås sammen"
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr "Minst to lagervarer må oppgis"
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr "Lagervare primærnøkkel verdi"
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr "Lagervare statuskode"
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr "Lager transaksjonsnotater"
@@ -9009,7 +9051,7 @@ msgstr "Testdata"
msgid "Test Report"
msgstr "Testrapport"
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr "Slett testdata"
@@ -9025,15 +9067,15 @@ msgstr "Notater for lagervare"
msgid "Installed Stock Items"
msgstr "Installerte lagervarer"
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr "Installer lagervare"
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr "Slett alle testresultater for denne lagervaren"
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr "Lagerjusteringshandlinger"
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr "Tell beholdning"
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr "Legg til lagerbeholdning"
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr "Fjern lagerbeholdning"
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr "Serialiser lager"
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr "Overfør lagerbeholdning"
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr "Tilordne til kunde"
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr "Ingen lagertelling utført"
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr "Ny plassering"
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr "Startside"
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr "Bekreft e-postadresse"
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr "Vennligst bekreft at %(email)s er ne e-postadresse for bruker %(user_display)s."
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "Bekreft"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr "Klikk på følgende lenke for å se denne delen"
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr "Minimum antall"
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr "Skjemafeil eksisterer"
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr "Angi søkeord"
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po
index b19d9665e6a1..4e37e2c5fa9d 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
@@ -51,18 +51,18 @@ msgstr "Szczegóły błędu można znaleźć w panelu administracyjnym"
msgid "Enter date"
msgstr "Wprowadź dane"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Wprowadź dane"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Uwagi"
@@ -127,42 +127,42 @@ msgstr "Podany e-mail domeny nie został zatwierdzony."
msgid "Registration is disabled."
msgstr "Rejestracja jest wyłączona."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Podano nieprawidłową ilość"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Pusty ciąg numeru seryjnego"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Podwójny numer seryjny"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr "Nieprawidłowy zakres grupy: {group}"
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Zakres grupy {group} przekracza dozwoloną ilość ({expected_quantity})"
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr "Nieprawidłowa kolejność grup: {group}"
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Nie znaleziono numerów seryjnych"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Liczba unikalnych numerów seryjnych ({len(serials)}) musi odpowiadać ilości ({expected_quantity})"
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Usuń znaczniki HTML z tej wartości"
@@ -292,7 +292,7 @@ msgstr "Rosyjski"
#: InvenTree/locales.py:39
msgid "Slovak"
-msgstr ""
+msgstr "Słowacki"
#: InvenTree/locales.py:40
msgid "Slovenian"
@@ -329,7 +329,7 @@ msgstr "chiński (tradycyjny)"
#: InvenTree/magic_login.py:28
#, python-brace-format
msgid "[{site_name}] Log in to the app"
-msgstr ""
+msgstr "[{site_name}] Logowanie do aplikacji"
#: InvenTree/magic_login.py:38 company/models.py:131
#: company/templates/company/company_base.html:132
@@ -340,7 +340,7 @@ msgstr "Adres E-Mail"
#: InvenTree/models.py:107
msgid "Error running plugin validation"
-msgstr ""
+msgstr "Błąd podczas walidacji wtyczki"
#: InvenTree/models.py:162
msgid "Metadata must be a python dict object"
@@ -386,7 +386,7 @@ msgstr "Brak pliku"
msgid "Missing external link"
msgstr "Brak zewnętrznego odnośnika"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Załącznik"
msgid "Select file to attach"
msgstr "Wybierz plik do załączenia"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Komentarz"
msgid "File comment"
msgstr "Komentarz pliku"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Użytkownik"
@@ -468,15 +468,15 @@ msgstr "Błąd zmiany nazwy pliku"
#: InvenTree/models.py:847
msgid "Duplicate names cannot exist under the same parent"
-msgstr ""
+msgstr "Duplikaty nazw nie mogą istnieć pod tym samym rodzicem"
#: InvenTree/models.py:864
msgid "Invalid choice"
msgstr "Błędny wybór"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Błędny wybór"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Nazwa"
@@ -500,8 +500,8 @@ msgstr "Nazwa"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Nazwa"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Nazwa"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Opis"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "nadrzędny"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Ścieżka"
@@ -576,104 +576,104 @@ msgstr "Błąd serwera"
msgid "An error has been logged by the server."
msgstr "Błąd został zapisany w logach serwera."
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Numer musi być prawidłowy"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Waluta"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr "Wybierz walutę z dostępnych opcji"
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr "Nie masz uprawnień do zmiany tej roli użytkownika."
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr "Tylko superużytkownicy mogą tworzyć nowych użytkowników"
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
-msgstr ""
+msgstr "Twoje konto zostało utworzone."
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
-msgstr ""
+msgstr "Zresetuj hasło"
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
-msgstr ""
+msgstr "Witamy w InvenTree"
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Nazwa pliku"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Nieprawidłowa wartość"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "Plik danych"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Wybierz plik danych do przesłania"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Nieobsługiwany typ pliku"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "Plik jest zbyt duży"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "Nie znaleziono kolumn w pliku"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "Nie znaleziono wierszy danych w pliku"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Nie podano wierszy danych"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Nie podano kolumn danych"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Brakuje wymaganej kolumny: '{name}'"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Zduplikowana kolumna: '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr "Obrazek zewnętrzny"
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "Adres URL zdalnego pliku obrazu"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "Pobieranie obrazów ze zdalnego URL nie jest włączone"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Sprawdzenie robotnika w tle nie powiodło się"
@@ -813,7 +813,7 @@ msgstr "Podziel z pozycji nadrzędnej"
msgid "Split child item"
msgstr "Podziel element podrzędny"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Scalone przedmioty magazynowe"
@@ -833,7 +833,7 @@ msgstr "Dane wyjściowe kolejności kompilacji ukończone"
msgid "Build order output rejected"
msgstr "Odrzucono wynik zlecenia produkcji"
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr "Zużyte przez kolejność kompilacji"
@@ -933,14 +933,14 @@ msgstr "O InvenTree"
msgid "Build must be cancelled before it can be deleted"
msgstr "Kompilacja musi zostać anulowana, zanim będzie mogła zostać usunięta"
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr "Materiał eksploatacyjny"
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr "Przydzielono"
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr "Dostępne"
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Zlecenie Budowy"
@@ -1001,15 +1001,15 @@ msgstr "Nieprawidłowy wybór kompilacji nadrzędnej"
#: build/models.py:126
msgid "Build order part cannot be changed"
-msgstr ""
+msgstr "Nie można zmienić elementu kompletacji"
#: build/models.py:170
msgid "Build Order Reference"
msgstr "Odwołanie do zamówienia wykonania"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana"
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana"
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana"
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Komponent"
@@ -1099,7 +1099,7 @@ msgstr "Odwołanie do zamówienia sprzedaży"
msgid "SalesOrder to which this build is allocated"
msgstr "Zamówienie sprzedaży, do którego budowa jest przypisana"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "Status budowania"
msgid "Build status code"
msgstr "Kod statusu budowania"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "Kod partii"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "Kod partii dla wyjścia budowy"
@@ -1258,27 +1258,32 @@ msgstr "Budowanie wyjścia jest już ukończone"
msgid "Build output does not match Build Order"
msgstr "Skompilowane dane wyjściowe nie pasują do kolejności kompilacji"
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr "Ilość musi być większa niż zero"
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr "Ilość nie może być większa niż ilość wyjściowa"
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr ""
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr ""
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr ""
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr ""
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "Ilość"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr "Wymagana ilość dla zlecenia produkcji"
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr "Alokowana ilość musi być większa niż zero"
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr ""
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "Element magazynowy"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr "Lokalizacja magazynowania przedmiotu"
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr "Zainstaluj do"
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr "Docelowa lokalizacja magazynowa przedmiotu"
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr ""
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "Numer seryjny"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr "Automatycznie przydzielaj numery seryjne"
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Automatycznie przydzielaj wymagane elementy z pasującymi numerami seryjnymi"
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr "Poniższe numery seryjne już istnieją lub są nieprawidłowe"
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr ""
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr "Lokalizacja"
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr "Odrzuć przydziały"
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "Status"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr "Usuń przydzielone zasoby"
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr "Odejmij wszystkie zasoby, które zostały już przypisane do tej produkcji"
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr "Usuń produkcje, które nie zostały zakończone"
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr "Niedozwolone"
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr "Zaakceptuj jako zużyte przez zlecenie produkcji"
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr "Nadmierny przydział zasobów"
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr "Akceptuj niekompletne"
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr ""
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr ""
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr "Towar musi znajdować się w magazynie"
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Magazyn, z którego mają być pozyskane elementy (pozostaw puste, aby pobrać z dowolnej lokalizacji)"
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr "Wyklucz lokalizację"
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr "Wyklucz produkty magazynowe z wybranej lokalizacji"
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Towary magazynowe w wielu lokalizacjach mogą być stosowane zamiennie"
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr "Zastępczy magazyn"
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr "Przedmiot opcjonalny"
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr "Element BOM"
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr "W Zamówieniu"
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr "Zamówienie zakupu"
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr "Niepoprawna nazwa domeny: {domain}"
msgid "No plugin"
msgstr "Brak wtyczki"
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr "Wymagane ponowne uruchomienie"
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr "Zmieniono ustawienie, które wymaga restartu serwera"
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr "Oczekujące migracje"
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr "Liczba oczekujących migracji bazy danych"
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr "Nazwa instancji serwera"
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr "Użyj nazwy instancji"
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr "Nazwa firmy"
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr "Wewnętrzna nazwa firmy"
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr "Bazowy URL"
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr "Bazowy adres URL dla instancji serwera"
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr "Domyślna waluta"
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr "Interwał aktualizacji waluty"
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr "Jak często aktualizować kursy wymiany walut (ustaw zero aby wyłączyć)"
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr "dni"
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr "Wtyczka aktualizacji waluty"
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr "Pobierz z adresu URL"
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr "Zezwól na pobieranie zewnętrznych obrazów i plików z zewnętrznego URL"
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr "Limit rozmiaru pobierania"
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr "Ścisła weryfikacja adresu URL"
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr "Wymagaj specyfikacji schematu podczas sprawdzania poprawności adresów URL"
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr "Wymagaj potwierdzenia"
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr "Wymagaj wyraźnego potwierdzenia dla określonych działań."
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr "Głębokość drzewa"
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr "Domyślna głębokość drzewa dla widoku drzewa. Głębsze poziomy mogą być leniwe, gdy są potrzebne."
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr "Częstotliwość sprawdzania aktualizacji"
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr "Jak często aktualizować kursy wymiany walut (ustaw zero aby wyłączyć)"
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr "Automatyczna kopia zapasowa"
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr "Włącz automatyczną kopię zapasową bazy danych i plików multimedialnych"
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr "Interwał automatycznego tworzenia kopii zapasowych"
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr "Określ liczbę dni między zdarzeniami automatycznej kopii zapasowej"
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr "Interwał usuwania zadań"
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Obsługa kodu kreskowego"
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr "Wyrażenie regularne IPN"
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr "Zezwól na powtarzający się IPN"
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr "Zezwól na edycję IPN"
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr "Skopiuj BOM komponentu"
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr "Szablon"
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr "Złożenie"
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr "Komponent"
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr "Możliwość zakupu"
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr "Części są domyślnie z możliwością zakupu"
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr "Możliwość sprzedaży"
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr "Części są domyślnie z możliwością sprzedaży"
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr "Możliwość śledzenia"
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr "Części są domyślnie z możliwością śledzenia"
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr "Wirtualny"
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr "Części są domyślnie wirtualne"
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr ""
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr "Ceny wewnętrzne"
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr "Włącz drukowanie etykiet"
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr "Włącz drukowanie etykiet z interfejsu WWW"
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr "DPI etykiety"
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr "Włącz raporty"
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr "Tryb Debugowania"
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr "Rozmiar strony"
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr "Domyślna wielkość strony dla raportów PDF"
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr "Włącz generowanie raportów testów"
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr "Automatycznie wypełniaj zlecenia zakupu"
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr "Automatycznie oznacz zlecenia jako zakończone po odebraniu wszystkich pozycji"
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr "Włącz opcję zapomnianego hasła"
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr "Włącz funkcję zapomnianego hasła na stronach logowania"
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr "Włącz rejestrację"
-#: common/models.py:1811
+#: common/models.py:1823
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:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr "Włącz SSO"
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr "Włącz SSO na stronach logowania"
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr "Adres e-mail jest wymagany"
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr "Autouzupełnianie użytkowników SSO"
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Automatycznie wypełnij dane użytkownika z danych konta SSO"
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr "E-mail dwa razy"
-#: common/models.py:1845
+#: common/models.py:1857
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:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr "Hasło dwukrotnie"
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr "Przy rejestracji dwukrotnie zapytaj użytkowników o ich hasło"
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr "Grupuj przy rejestracji"
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr "Wymuś MFA"
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr "Użytkownicy muszą używać zabezpieczeń wieloskładnikowych."
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr "Sprawdź wtyczki przy starcie"
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr "Włącz integrację URL"
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr "Włącz wtyczki, aby dodać ścieżki URL"
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr "Włącz integrację z aplikacją"
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr "Włącz wtyczki, aby dodać aplikacje"
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr "Włącz wtyczki, aby uruchamiać zaplanowane zadania"
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr "Klucz ustawień (musi być unikalny - niewrażliwy na wielkość liter"
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr "Pokaż obserwowane części"
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr "Pokaż obserwowane części na stronie głównej"
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr "Pokaż obserwowane kategorie"
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr "Pokaż obserwowane kategorie części na stronie głównej"
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr "Pokaż najnowsze części"
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr "Pokaż najnowsze części na stronie głównej"
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr "Pokaż niski stan magazynowy"
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr "Pokaż elementy o niskim stanie na stronie głównej"
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr "Pokaż wymagany stan zapasów"
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr "Szukaj części"
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr "Ukryj nieaktywne części"
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr "Wyszukaj zlecenia zakupu"
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr "Wyklucz nieaktywne zlecenia zakupu"
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr "Pokaż ilość w formularzach"
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr "Stały pasek nawigacyjny"
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr "Format daty"
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr "Preferowany format wyświetlania dat"
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Planowanie komponentów"
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr "Cena"
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr "Punkt końcowy"
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr "Aktywny"
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr "Sekret"
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr "Współdzielony sekret dla HMAC"
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr "Id wiadomości"
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr "Unikalny identyfikator dla tej wiadomości"
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr "Host, od którego otrzymano tę wiadomość"
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr "Nagłówek"
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr "Nagłówek tej wiadomości"
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr "Zawartość"
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Autor"
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr "Obraz"
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr "Firma"
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Część bazowa"
@@ -3953,7 +3967,7 @@ msgstr "Wybierz część"
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr "Wybierz producenta"
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr ""
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr "Wartość"
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr "Dostawca"
msgid "Select supplier"
msgstr "Wybierz dostawcę"
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr "Uwaga"
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr "Opakowanie"
@@ -4199,13 +4213,13 @@ msgstr ""
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr "Klient"
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr ""
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr "Towary"
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr "Nie znaleziono pasującego zlecenia zakupu"
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr "Zlecenie zakupu"
@@ -4809,7 +4823,7 @@ msgstr "Zlecenie zakupu"
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr "Odebrane"
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr "Cena zakupu"
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr "Użytkownik, który sprawdził tę wysyłkę"
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr "Przesyłka"
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr "ID komponentu"
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr "Nazwa komponentu"
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr "Ścieżka kategorii"
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr "Ścieżka kategorii"
msgid "Parts"
msgstr "Części"
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr "IPN komponentu"
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr "Nadchodzące zlecenie zakupu"
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr "Ważny"
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr "Ta opcja musi być zaznaczona"
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Kategoria komponentu"
@@ -5919,7 +5937,7 @@ msgstr "Kategorie części"
msgid "Default location for parts in this category"
msgstr "Domyślna lokalizacja dla komponentów w tej kategorii"
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr "Nazwa komponentu"
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr "Data"
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr "Nazwa testu"
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
+msgstr ""
+
+#: part/models.py:3465
msgid "Test Description"
msgstr "Testowy opis"
-#: part/models.py:3465
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr "Wprowadź opis do tego testu"
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr "Wymagane"
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr "Wymaga wartości"
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr "Wymaga załącznika"
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr "Część nadrzędna"
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr "Dane"
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr "Wartość parametru"
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr "Wartość domyślna"
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr "Unikalny wartość ID komponentu"
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr "Wartość IPN części"
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr "Poziom"
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr "Wybierz część nadrzędną"
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr "Podczęść"
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr "Ten element BOM jest opcjonalny"
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr "Notatki pozycji BOM"
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr "Suma kontrolna"
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr "Zatwierdzone"
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr "Zezwalaj na warianty"
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr "Część zastępcza"
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr "Część 1"
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr "Część 2"
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr "Wybierz powiązaną część"
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr "Waluta zakupu tego towaru"
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr "Kopiuj obraz"
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr "Kopiuj BOM"
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr "Kopiuj parametry"
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr "Duplikuj część"
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr "Usuń istniejące dane"
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr "Pomiń nieprawidłowe wiersze"
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr "Włącz tę opcję, aby pominąć nieprawidłowe wiersze"
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr "Wyczyść istniejący BOM"
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr "Nie podano ilości"
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr "Nieprawidłowa ilość"
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr "Nieaktywny"
@@ -7402,7 +7436,7 @@ msgstr "Warianty"
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr "Stan"
@@ -7448,7 +7482,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr "Ostatnia aktualizacja"
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr "Metoda"
msgid "No author found"
msgstr "Nie znaleziono autora"
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr "Razem"
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr "Wynik"
@@ -8416,7 +8450,7 @@ msgstr "Zainstalowane elementy"
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr "Numer seryjny"
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr "Data ważności"
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr "Wybierz właściciela"
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr "Wybierz pasującą część dostawcy dla tego towaru"
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr "Numer seryjny już istnieje"
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr "Notatki do wpisu"
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr "Należy podać wartość dla tego testu"
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr "Nazwa testu"
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr "Wynik testu"
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr "Część musi być dostępna do sprzedaży"
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr "Przelicz stan magazynowy"
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr "Usuń stan magazynowy"
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr "Przenieś stan magazynowy"
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr "Nowa lokalizacja"
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr "Strona główna"
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ 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:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "Potwierdź"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr "Minimalna ilość"
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr "Istnieją błędy formularza"
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/pt/LC_MESSAGES/django.po b/InvenTree/locale/pt/LC_MESSAGES/django.po
index 392c30c01cb9..4231d3d0166a 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Portuguese, Brazilian\n"
"Language: pt_BR\n"
@@ -51,18 +51,18 @@ msgstr "Detalhes do erro podem ser encontrados no painel de administrador"
msgid "Enter date"
msgstr "Insira uma Data"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Insira uma Data"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Anotações"
@@ -127,42 +127,42 @@ msgstr "O domínio de e-mail providenciado não foi aprovado."
msgid "Registration is disabled."
msgstr "Cadastro está desativado."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Quantidade fornecida inválida"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Número serial em branco"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Número de série duplicado"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr "Intervalo de grupo inválido: {group}"
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Intervalo do grupo {group} excede a quantidade permitida ({expected_quantity})"
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr "Sequência de grupo inválida:{group}"
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Nenhum número de série foi encontrado"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Números de série únicos ({len(serials)}) deve corresponder a quantidade ({expected_quantity})"
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Remova as \"tags\" HTML deste valor"
@@ -340,7 +340,7 @@ msgstr "Email"
#: InvenTree/models.py:107
msgid "Error running plugin validation"
-msgstr ""
+msgstr "Erro ao executar validação do plugin"
#: InvenTree/models.py:162
msgid "Metadata must be a python dict object"
@@ -386,7 +386,7 @@ msgstr "Arquivo ausente"
msgid "Missing external link"
msgstr "Link externo não encontrado"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Anexo"
msgid "Select file to attach"
msgstr "Selecione arquivo para anexar"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Comentario"
msgid "File comment"
msgstr "Comentario sobre arquivo"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Usuario"
@@ -474,9 +474,9 @@ msgstr "Nomes duplicados não podem existir sob o mesmo parental"
msgid "Invalid choice"
msgstr "Escolha inválida"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Escolha inválida"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Nome"
@@ -500,8 +500,8 @@ msgstr "Nome"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Nome"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Nome"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Descrição"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "parent"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Caminho"
@@ -576,104 +576,104 @@ msgstr "Erro de servidor"
msgid "An error has been logged by the server."
msgstr "Log de erro salvo pelo servidor."
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Preicsa ser um numero valido"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Moeda"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr "Selecione a Moeda nas opções disponíveis"
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr "Não tem permissões para alterar este papel do usuário."
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr "Apenas superusuários podem criar novos usuários"
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
-msgstr ""
+msgstr "Sua conta foi criada."
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
-msgstr ""
+msgstr "Por favor, use a função de redefinir senha para acessar"
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr "Bem-vindo(a) ao InvenTree"
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Nome do arquivo"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Valor inválido"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "Arquivo de dados"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Selecione um arquivo de dados para enviar"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Tipo de arquivo não suportado"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "O arquivo é muito grande"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "Nenhuma coluna encontrada no arquivo"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "Nenhuma linha de dados encontrada no arquivo"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Nenhuma linha de dados fornecida"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Nenhuma coluna de dados fornecida"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Falta a coluna obrigatória: '{name}'"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Coluna duplicada: \"{col}\""
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr "Imagens Remota"
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "URL do arquivo de imagem remoto"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "Baixar imagens de URL remota não está habilitado"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Falha em verificar o histórico do trabalhador"
@@ -813,7 +813,7 @@ msgstr "Separado do Item Paternal"
msgid "Split child item"
msgstr "Separar o Item filho"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Itens de estoque mesclados"
@@ -833,7 +833,7 @@ msgstr "Criação do pedido de produção completado"
msgid "Build order output rejected"
msgstr "Saída do pedido de produção rejeitada"
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr "Usado no pedido de produção"
@@ -933,14 +933,14 @@ msgstr "Sobre o InvenTree"
msgid "Build must be cancelled before it can be deleted"
msgstr "Produção deve ser cancelada antes de ser deletada"
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr "Consumível"
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr "Alocado"
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr "Disponível"
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Ondem de Produção"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "Referência do pedido de produção"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "Pedido de produção para qual este serviço está alocado"
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "Pedido de produção para qual este serviço está alocado"
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "Pedido de produção para qual este serviço está alocado"
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Peça"
@@ -1099,7 +1099,7 @@ msgstr "Referência do pedido de venda"
msgid "SalesOrder to which this build is allocated"
msgstr "Pedido de Venda para qual esta produção está alocada"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "Progresso da produção"
msgid "Build status code"
msgstr "Código de situação da produção"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "Código de Lote"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "Código do lote para esta saída de produção"
@@ -1258,27 +1258,32 @@ msgstr "Saída de produção já completada"
msgid "Build output does not match Build Order"
msgstr "Saída da produção não corresponde ao Pedido de Produção"
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr "Quantidade deve ser maior que zero"
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr "Quantidade não pode ser maior do que a quantidade de saída"
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr "Objeto de produção"
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr "Objeto de produção"
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr "Objeto de produção"
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr "Objeto de produção"
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "Quantidade"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr "Quantidade necessária para o pedido de produção"
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Item de produção deve especificar a saída, pois peças mestres estão marcadas como rastreáveis"
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr "Quantidade alocada ({q}) não deve exceder a quantidade disponível em estoque ({a})"
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr "O item do estoque está sobre-alocado"
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr "Quantidade alocada deve ser maior que zero"
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr "Quantidade deve ser 1 para estoque serializado"
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr "Item estoque selecionado não coincide com linha da LDM"
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr "Item estoque selecionado não coincide com linha da LDM"
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "Item de estoque"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr "Origem do item em estoque"
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr "Quantidade do estoque para alocar à produção"
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr "Instalar em"
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr "Destino do Item do Estoque"
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr "Saída da Produção"
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr "Saída de produção não coincide com a produção progenitora"
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr "Peça de saída não coincide com a peça da ordem de produção"
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr "Esta saída de produção já foi concluída"
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr "A saída de produção não está completamente alocada"
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr "Entre a quantidade da saída de produção"
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr "Quantidade inteira necessária para peças rastreáveis"
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr "Quantidade inteira necessária, pois a lista de materiais contém peças rastreáveis"
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "Números de Série"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr "Digite os números de série para saídas de produção"
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr "Alocar Números de Série Automaticamente"
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Alocar automaticamente os itens necessários com os números de série correspondentes"
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr "Os seguintes números de série já existem ou são inválidos"
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr "Uma lista de saídas de produção deve ser fornecida"
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr "Uma lista de saídas de produção deve ser fornecida"
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr "Local"
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr "Local de estoque para saídas recicladas"
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr "Descartar alocações"
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr "Descartar quaisquer alocações de estoque para saídas sucateadas"
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr "Motivo para sucatear saída(s) de produção"
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr "Local para saídas de produção concluídas"
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "Situação"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr "Aceitar Alocação Incompleta"
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr "Concluir saídas se o estoque não tiver sido totalmente alocado"
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr "Remover Estoque Alocado"
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr "Subtrair qualquer estoque que já tenha sido alocado para esta produção"
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr "Remover Saídas Incompletas"
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr "Excluir quaisquer saídas de produção que não tenham sido completadas"
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr "Não permitido"
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr "Aceitar conforme consumido por esta ordem de produção"
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr "Desatribua antes de completar este pedido de produção"
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr "Estoque sobrealocado"
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr "Como deseja manejar itens de estoque extras atribuídos ao pedido de produção"
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr "Alguns itens de estoque foram sobrealocados"
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr "Aceitar não alocados"
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr "Aceitar que os itens de estoque não foram totalmente alocados para esta produção"
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr "Estoque obrigatório não foi totalmente alocado"
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr "Aceitar Incompleto"
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr "Aceitar que o número requerido de saídas de produção não foi concluído"
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr "Quantidade de produção requerida não foi concluída"
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr "Pedido de produção tem saídas incompletas"
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr "Linha de produção"
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr "Saída da Produção"
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr "Saída de produção deve indicar a mesma produção"
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr "Item da linha de produção"
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr "bin_item.part deve indicar a mesma peça do pedido de produção"
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr "Item deve estar em estoque"
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Quantidade disponível ({q}) excedida"
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr "Saída de produção deve ser definida para alocação de peças rastreadas"
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr "Saída de produção deve ser definida para alocação de peças não rastreadas"
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr "Alocação do Item precisa ser fornecida"
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Local de estoque onde peças serão extraídas (deixar em branco para qualquer local)"
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr "Local não incluso"
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr "Não incluir itens de estoque deste local"
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr "Estoque permutável"
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Itens de estoque em múltiplos locais pode ser permutável"
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr "Substituir Estoque"
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr "Permitir alocação de peças substitutas"
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr "Itens opcionais"
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr "Alocar itens LDM opcionais para o pedido de produção"
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr "Item LDM"
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr "Estoque Alocado"
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr "No pedido"
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr "Em Produção"
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr "Saídas Concluídas"
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr "Pedido de Venda"
@@ -1908,10 +1913,10 @@ msgstr "Peças alocadas"
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr "Nome de domínio inválido: {domain}"
msgid "No plugin"
msgstr "Sem extensão"
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr "Reinicialização necessária"
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr "Uma configuração que requer uma reinicialização do servidor foi alterada"
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr "Migrações pendentes"
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr "Número de migrações pendentes na base de dados"
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr "Nome da Instância do Servidor"
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr "Descritor de frases para a instância do servidor"
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr "Usar nome da instância"
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr "Usar o nome da instância na barra de título"
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr "Restringir a exibição 'sobre'"
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr "Mostrar 'sobre' modal apenas para superusuários"
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr "Nome da empresa"
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr "Nome interno da Empresa"
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr "URL de Base"
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr "URL Base da instância do servidor"
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr "Moeda Padrão"
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr "Selecione a moeda base para cálculos de preços"
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr "Intervalo de Atualização da Moeda"
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr "Com que frequência atualizar as taxas de câmbio (defina como zero para desativar)"
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr "dias"
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr "Extensão de Atualização de Moeda"
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr "Extensão de Atualização de Moeda a utilizar"
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr "Baixar do URL"
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr "Permitir baixar imagens remotas e arquivos de URLs externos"
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr "Limite de tamanho para baixar"
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr "Maior tamanho de imagem remota baixada permitida"
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr "Usuário-agente utilizado para baixar da URL"
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr "Permitir a substituição de imagens e arquivos usados baixados por usuário-agente (deixar em branco por padrão)"
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr "Validação rigorosa de URL"
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr "Exigir especificação de esquema ao validar URLs"
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr "Exigir confirmação"
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr "Exigir confirmação explícita do usuário para uma certa ação."
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr "Profundidade da árvore"
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr "Profundidade padrão de visualização da árvore. Níveis mais profundos podem ser carregados gradualmente conforme necessário."
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr "Atualizar Intervalo de Verificação"
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr "Frequência para verificar atualizações (defina como zero para desativar)"
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr "Cópia de Segurança Automática"
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr "Ativar cópia de segurança automática do banco de dados e arquivos de mídia"
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr "Intervalo de Backup Automático"
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr "Especificar o número de dia entre as cópias de segurança"
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr "Intervalo para Excluir da Tarefa"
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr "Os resultados da tarefa no plano de fundo serão excluídos após um número especificado de dias"
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr "Intervalo para Excluir do Registro de Erro"
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr "Registros de erros serão excluídos após um número especificado de dias"
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr "Intervalo para Excluir de Notificação"
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr "Notificações de usuários será excluído após um número especificado de dias"
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Suporte aos códigos de barras"
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr "Ativar suporte a leitor de código de barras na interface web"
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr "Atraso na entrada de código de barras"
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr "Tempo de atraso de processamento de entrada de barras"
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr "Suporte a código de barras via Câmera"
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr "Permitir escanear código de barras por câmera pelo navegador"
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr "Revisões de peças"
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr "Habilitar campo de revisão para a Peça"
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr "Regex IPN"
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr "Padrão de expressão regular adequado para Peça IPN"
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr "Permitir Duplicação IPN"
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr "Permitir que várias peças compartilhem o mesmo IPN"
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr "Permitir Edição IPN"
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr "Permitir trocar o valor do IPN enquanto se edita a peça"
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr "Copiar dados da LDM da Peça"
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr "Copiar dados da LDM por padrão quando duplicar a peça"
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr "Copiar Dados de Parâmetro da Peça"
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr "Copiar dados de parâmetros por padrão quando duplicar uma peça"
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr "Copiar Dados Teste da Peça"
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr "Copiar dados de teste por padrão quando duplicar a peça"
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr "Copiar Parâmetros dos Modelos de Categoria"
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr "Copiar parâmetros do modelo de categoria quando criar uma peça"
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr "Modelo"
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr "Peças são modelos por padrão"
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr "Montagem"
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr "Peças podem ser montadas a partir de outros componentes por padrão"
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr "Componente"
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr "Peças podem ser usadas como sub-componentes por padrão"
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr "Comprável"
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr "Peças são compráveis por padrão"
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr "Vendível"
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr "Peças vão vendíveis por padrão"
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr "Rastreável"
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr "Peças vão rastreáveis por padrão"
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr "Virtual"
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr "Peças são virtuais por padrão"
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr "Mostrar Importações em Visualizações"
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr "Exibir o assistente de importação em algumas visualizações de partes"
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr "Mostra peças relacionadas"
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr "Mostrar peças relacionadas para uma peça"
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr "Dados Iniciais de Estoque"
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr "Permitir Criação de estoque inicial quando adicional uma nova peça"
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr "Dados Iniciais de Fornecedor"
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr "Permitir criação de dados iniciais de fornecedor quando adicionar uma nova peça"
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr "Formato de Exibição do Nome da Peça"
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr "Formato para exibir o nome da peça"
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr "Ícone de Categoria de Peça Padrão"
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr "Ícone padrão de categoria de peça (vazio significa sem ícone)"
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr "Forçar Unidades de Parâmetro"
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr "Se as unidades são fornecidas, os valores do parâmetro devem corresponder às unidades especificadas"
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr "Mínimo de Casas Decimais do Preço"
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr "Mínimo número de casas decimais a exibir quando renderizar dados de preços"
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr "Máximo Casas Decimais de Preço"
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr "Número máximo de casas decimais a exibir quando renderizar dados de preços"
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr "Usar Preços do Fornecedor"
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr "Incluir quebras de preço do fornecedor nos cálculos de preços globais"
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr "Sobrescrever histórico de compra"
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr "Histórico do pedido de compra substitui os intervalos dos preços do fornecedor"
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr "Usar Preços do Item em Estoque"
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr "Usar preço inserido manualmente no estoque para cálculos de valores"
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr "Idade do preço do Item em Estoque"
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr "Não incluir itens em estoque mais velhos que este número de dias no cálculo de preços"
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr "Usar Preço Variável"
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr "Incluir preços variáveis nos cálculos de valores gerais"
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr "Apenas Ativar Variáveis"
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr "Apenas usar peças variáveis ativas para calcular preço variáveis"
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr "Intervalo de Reconstrução de Preços"
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr "Número de dias antes da atualização automática dos preços das peças"
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr "Preços Internos"
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr "Habilitar preços internos para peças"
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr "Sobrepor Valor Interno"
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr "Se disponível, preços internos sobrepõe variação de cálculos de preço"
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr "Ativar impressão de etiquetas"
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr "Ativar impressão de etiqueta pela interface da internet"
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr "DPI da Imagem na Etiqueta"
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr "Resolução de DPI quando gerar arquivo de imagens para fornecer à extensão de impressão de etiquetas"
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr "Habilitar Relatórios"
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr "Ativar geração de relatórios"
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr "Modo de depuração"
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr "Gerar relatórios em modo de depuração (saída HTML)"
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr "Tamanho da página"
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr "Tamanho padrão da página PDF para relatórios"
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr "Ativar Relatórios Teste"
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr "Ativar geração de relatórios de teste"
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr "Anexar Relatórios de Teste"
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr "Quando imprimir um Relatório de Teste, anexar uma cópia do mesmo ao item de estoque associado"
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr "Seriais Únicos Globais"
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr "Números de série para itens de estoque devem ser globalmente únicos"
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr "Preenchimento automático de Números Seriais"
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr "Preencher números de série automaticamente no formulário"
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr "Excluir Estoque Esgotado"
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr "Determina o comportamento padrão quando um item de estoque é esgotado"
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr "Modelo de Código de Lote"
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr "Modelo para gerar códigos de lote padrão para itens de estoque"
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr "Validade do Estoque"
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr "Ativar função de validade de estoque"
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr "Vender estoque expirado"
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr "Permitir venda de estoque expirado"
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr "Tempo de Estoque Inativo"
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr "Número de dias em que os itens em estoque são considerados obsoleto antes de vencer"
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr "Produzir Estoque Vencido"
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr "Permitir produção com estoque vencido"
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr "Controle de propriedade do estoque"
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr "Ativar controle de propriedade sobre locais e itens de estoque"
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr "Ícone padrão do local de estoque"
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr "Ícone padrão de local de estoque (vazio significa sem ícone)"
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr "Mostrar Itens de Estoque Instalados"
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr "Exibir itens de estoque instalados nas tabelas de estoque"
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr "Modelo de Referência de Pedidos de Produção"
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr "Modelo necessário para gerar campo de referência do Pedido de Produção"
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr "Ativar Pedidos de Devolução"
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr "Ativar funcionalidade de pedido de retorno na interface do usuário"
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr "Modelo de Referência de Pedidos de Devolução"
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr "Modelo necessário para gerar campo de referência do Pedido de Devolução"
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr "Editar os Pedidos de Devolução Concluídos"
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr "Permitir a edição de pedidos de devolução após serem enviados ou concluídos"
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr "Modelo de Referência de Pedidos de Venda"
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr "Modelo necessário para gerar campo de referência do Pedido de Venda"
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr "Envio Padrão de Pedidos de Venda"
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr "Habilitar criação de envio padrão com Pedidos de Vendas"
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr "Editar os Pedidos de Vendas concluídos"
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr "Permitir a edição de pedidos de vendas após serem enviados ou concluídos"
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr "Modelo de Referência de Pedidos de Compras"
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr "Modelo necessário para gerar campo de referência do Pedido de Compra"
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr "Editar Pedidos de Compra Concluídos"
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr "Permitir a edição de pedidos de compras após serem enviados ou concluídos"
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr "Autocompletar Pedidos de Compra"
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr "Marcar automaticamente os pedidos de compra como concluídos quando todos os itens de linha forem recebidos"
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr "Habitar esquecer senha"
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr "Habilitar a função \"Esqueci minha senha\" nas páginas de acesso"
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr "Habilitar cadastro"
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr "Ativar auto-registro para usuários na página de entrada"
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr "Ativar SSO"
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr "Ativar SSO na página de acesso"
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr "Ativar registro SSO"
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr "Ativar auto-registro por SSO para usuários na página de entrada"
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr "Email obrigatório"
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr "Exigir do usuário o e-mail no cadastro"
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr "Auto-preencher usuários SSO"
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Preencher automaticamente os detalhes do usuário a partir de dados da conta SSO"
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr "Enviar email duplo"
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr "No registro pedir aos usuários duas vezes pelo email"
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr "Senha duas vezes"
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr "No registro pedir aos usuários duas vezes pela senha"
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr "Domínios permitidos"
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr "Restringir registros a certos domínios (separados por vírgula, começando com @)"
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr "Grupo no cadastro"
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr "Grupo ao qual novos usuários são atribuídos no registro"
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr "Forçar AMF"
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr "Os usuários devem usar uma segurança multifator."
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr "Checar extensões no início"
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr "Checar que todas as extensões instaladas no início — ativar em ambientes de contêineres"
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
-msgstr ""
+msgstr "Verificar por atualizações de plugin"
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
-msgstr ""
+msgstr "Habilitar verificações periódicas de atualizações para plugins instalados"
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr "Ativar integração URL"
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr "Ativar extensão para adicionar rotas URL"
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr "Ativar integração de navegação"
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr "Ativar extensões para integrar à navegação"
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr "Ativa integração com aplicativo"
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr "Ativar extensões para adicionar aplicativos"
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr "Ativar integração do calendário"
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr "Ativar extensões para executar tarefas agendadas"
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr "Ativar integração de eventos"
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr "Ativar extensões para responder a eventos internos"
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr "Habilitar códigos de projeto"
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr "Ativar códigos de projeto para rastrear projetos"
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr "Funcionalidade de Balanço do Inventário"
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr "Ativar funcionalidade de balanço para gravar níveis de estoque e calcular seu valor"
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr "Excluir Locais Externos"
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr "Excluir itens de estoque em locais externos dos cálculos do estoque"
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr "Período de Balanço Automático"
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr "Número de dias entre gravação do balanço de estoque (coloque zero para desativar)"
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr "Intervalo para Excluir o Relatório"
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr "Relatórios de balanço serão apagados após um número de dias especificado"
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr "Mostrar nomes completos dos usuários"
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr "Mostrar Nomes Completos em vez de Nomes de Usuário"
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr "Senha de configurações (deve ser única — diferencia maiúsculas de minúsculas"
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr "Ocultar peças inativas"
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr "Ocultar peças inativas nos resultados exibidos na página inicial"
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr "Mostrar peças subscritas"
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr "Mostrar peças subscritas na tela inicial"
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr "Mostrar categorias subscritas"
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr "Mostrar categorias de peças subscritas na tela inicial"
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr "Mostrar peças mais recentes"
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr "Mostrar as peças mais recentes na página inicial"
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr "Mostrar LDMs não validadas"
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr "Mostrar LDMs que aguardam validação na página inicial"
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr "Mostrar alterações recentes de estoque"
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr "Mostrar itens de estoque alterados recentemente na página inicial"
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr "Mostrar estoque baixo"
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr "Mostrar itens de baixo estoque na página inicial"
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr "Mostrar estoque esgotado"
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr "Mostrar itens sem estoque na página inicial"
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr "Mostrar estoque necessário"
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr "Mostrar itens de estoque necessários para produções na tela inicial"
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr "Mostrar estoque expirado"
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr "Mostrar expirados itens em estoque na tela inicial"
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr "Mostrar estoque inativo"
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr "Mostrar estoque inativo na tela inicial"
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr "Mostrar produções pendentes"
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr "Mostrar produções pendentes na tela inicial"
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr "Mostrar produções atrasadas"
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr "Mostrar produções atrasadas na tela inicial"
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr "Mostrar pedidos de compra pendentes"
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr "Mostrar os Pedidos de Compras pendentes na página inicial"
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr "Mostrar Pedidos de Compra atrasados"
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr "Mostrar os Pedidos de Compras atrasadas na tela inicial"
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr "Mostrar pedidos de vendas pendentes"
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr "Mostrar os Pedidos de Vendas pendentes na página inicial"
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr "Mostrar Pedidos de Venda atrasados"
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr "Mostrar os Pedidos de Vendas atrasadas na tela inicial"
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr "Mostrar remessas de OV pendentes"
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr "Mostrar envios OV pendentes na tela inicial"
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr "Mostrar notícias"
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr "Mostrar notícias na tela inicial"
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr "Mostrar etiqueta em linha"
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr "Mostrar etiquetas em PDF no navegador, ao invés de baixar o arquivo"
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr "Impressora de etiquetas padrão"
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr "Configurar qual impressora de etiqueta deve ser selecionada por padrão"
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr "Mostrar relatório em linha"
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr "Mostrar relatórios em PDF no navegador, ao invés de baixar o arquivo"
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr "Procurar Peças"
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr "Mostrar peças na janela de visualização de pesquisa"
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr "Buscar Peças do Fornecedor"
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr "Mostrar fornecedor de peças na janela de visualização de pesquisa"
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr "Buscar peças do fabricante"
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr "Mostrar fabricante de peças na janela de visualização de pesquisa"
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr "Ocultar peças inativas"
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr "Não incluir peças inativas na janela de visualização de pesquisa"
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr "Pesquisar Categorias"
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr "Mostrar categoria das peças na janela de visualização de pesquisa"
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr "Pesquisar Estoque"
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr "Mostrar itens do estoque na janela de visualização de pesquisa"
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr "Ocultar itens do estoque indisponíveis"
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr "Não incluir itens de estoque que não estão disponíveis na janela de visualização de pesquisa"
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr "Procurar Locais"
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr "Mostrar locais de estoque na janela de visualização de pesquisa"
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr "Pesquisar empresas"
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr "Mostrar empresas na janela de visualização de pesquisa"
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr "Procurar Pedidos de Produção"
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr "Mostrar pedidos de produção na janela de visualização de pesquisa"
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr "Mostrar Pedido de Compras"
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr "Mostrar pedidos de compra na janela de visualização de pesquisa"
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr "Não incluir Pedidos de Compras Inativos"
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr "Não incluir pedidos de compras inativos na janela de visualização de pesquisa"
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr "Procurar Pedidos de Vendas"
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr "Mostrar pedidos de vendas na janela de visualização de pesquisa"
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr "Não Incluir Pedidos de Compras Inativas"
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr "Não incluir pedidos de vendas inativos na janela de visualização de pesquisa"
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr "Procurar Pedidos de Devolução"
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr "Mostrar pedidos de devolução na janela de visualização de pesquisa"
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr "Não Incluir Pedidos de Devolução Inativas"
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr "Não incluir pedidos de devolução inativos na janela de visualização de pesquisa"
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr "Mostrar Resultados Anteriores"
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr "Número de resultados mostrados em cada seção da janela de visualização de pesquisa"
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr "Pesquisa de Regex"
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr "Permitir expressôes comuns nas conultas de pesquisas"
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr "Busca de Palavras Inteira"
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr "Pesquisa retorna que palavra inteira coincide"
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr "Mostrar Quantidade nos Formulários"
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr "Mostrar a quantidade de peças disponíveis em alguns formulários"
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr "Tecla Esc Fecha Formulários"
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr "Usar a tecla Esc para fechar fomulários modais"
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr "Fixar Navbar"
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr "A posição do Navbar é fixa no topo da tela"
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr "Formato da data"
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr "Formato preferido para mostrar datas"
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Agendamento de peças"
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr "Mostrar informações de agendamento de peças"
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr "Balanço de Peça"
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr "Mostrar informação de balanço da peça (se a funcionalidade de balanço estiver habilitada)"
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr "Comprimento da Tabela de Frases"
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr "Limite máximo de comprimento para frases exibidas nas visualizações de tabela"
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr "Modelo de rótulo padrão da peça"
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr "O modelo de rótulo da peça a ser selecionado automaticamente"
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr "Modelo padrão de item de estoque"
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr "O modelo de rótulo do item a ser selecionado automaticamente"
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr "Modelo de rótulo de localização do estoque padrão"
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr "O modelo de rótulo do local de estoque a ser selecionado automaticamente"
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr "Receber relatório de erros"
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr "Receber notificações para erros do sistema"
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
-msgstr ""
+msgstr "Últimas máquinas de impressão utilizadas"
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
-msgstr ""
+msgstr "Salvar as últimas máquinas de impressão usadas para um usuário"
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr "Quantidade de Parcelamentos"
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr "Quantidade de Parcelamentos"
msgid "Price"
msgstr "Preço"
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr "Preço unitário na quantidade especificada"
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr "Ponto final"
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr "Ponto final em qual o gancho web foi recebido"
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr "Nome para este webhook"
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr "Nome para este webhook"
msgid "Active"
msgstr "Ativo"
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr "Este gancho web está ativo"
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr "Token"
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr "Token de acesso"
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr "Segredo"
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr "Segredo compartilhado para HMAC"
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr "ID da Mensagem"
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr "Identificador exclusivo desta mensagem"
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr "Servidor"
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr "Servidor do qual esta mensagem foi recebida"
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr "Cabeçalho"
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr "Cabeçalho da mensagem"
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr "Corpo"
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr "Corpo da mensagem"
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr "Ponto do qual esta mensagem foi recebida"
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr "Trabalhado em"
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr "O trabalho desta mensagem foi concluído?"
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr "Id"
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr "Título"
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr "Publicado"
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Autor"
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Resumo"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr "Lida"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr "Esta notícia do item foi lida?"
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr "Esta notícia do item foi lida?"
msgid "Image"
msgstr "Imagem"
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr "Arquivo de imagem"
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr "Nome da unidade deve ser um identificador válido"
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr "Nome da unidade"
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr "Símbolo"
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr "Símbolo de unidade opcional"
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr "Definição"
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr "Definição de unidade"
@@ -3849,7 +3863,7 @@ msgstr "Moeda padrão utilizada para esta empresa"
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr "Empresa"
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr "Link para as informações do endereço (externo)"
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Peça base"
@@ -3953,7 +3967,7 @@ msgstr "Selecionar peça"
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr "Selecionar fabricante"
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr "Nome do parâmetro"
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr "Valor"
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr "Valor do Parâmetro"
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr "Parte do fabricante vinculado deve fazer referência à mesma peça base
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr "Fornecedor"
msgid "Select supplier"
msgstr "Selecione o fornecedor"
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr "Unidade de reserva de estoque fornecedor"
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr "Descrição da peça fornecedor"
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr "Anotação"
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr "Taxa mínima (ex.: taxa de estoque)"
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr "Embalagem"
@@ -4199,13 +4213,13 @@ msgstr "Excluir imagem"
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr "Cliente"
@@ -4463,7 +4477,7 @@ msgstr "Endereços"
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr "Fornecedor da Peça"
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr "Nenhuma informação do fornecedor está disponível"
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr "Atualizar Disponibilidade de Peças"
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr "Itens de Estoque"
@@ -4602,7 +4616,7 @@ msgstr "Nova Empresa"
#: label/api.py:247
msgid "Error printing label"
-msgstr ""
+msgstr "Erro ao imprimir etiqueta"
#: label/models.py:115
msgid "Label name"
@@ -4676,48 +4690,48 @@ msgstr "Código QR"
msgid "QR code"
msgstr "Código QR"
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr "Desconhecido"
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr "Nenhum pedido de compra correspondente encontrado"
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr "Pedido de Compra"
@@ -4809,7 +4823,7 @@ msgstr "Pedido de Compra"
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr "Devolver pedido"
@@ -5008,9 +5022,9 @@ msgstr "Recebido"
msgid "Number of items received"
msgstr "Número de itens recebidos"
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr "Preço de Compra"
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr "Usuário que verificou esta remessa"
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr "Remessa"
@@ -5726,12 +5740,12 @@ msgstr "Atualizado {part} unid.-preço para {price}"
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr "Atualizado {part} unid.-preço para {price} e quantidade para {qty}"
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr "ID da Peça"
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr "Nome da Peça"
@@ -5743,7 +5757,7 @@ msgstr "Descrição da Peça"
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr "IPN"
@@ -5811,11 +5825,11 @@ msgstr "Custo Mínimo"
msgid "Maximum Cost"
msgstr "Custo Máximo"
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr "ID Paternal"
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr "Nome Paternal"
@@ -5824,7 +5838,7 @@ msgstr "Nome Paternal"
msgid "Category Path"
msgstr "Caminho da Categoria"
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr "Caminho da Categoria"
msgid "Parts"
msgstr "Peças"
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr "Nível da LDM"
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr "ID Item LDM"
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr "IPN Paternal"
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr "IPN da Peça"
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr "Preço Mínimo"
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr "Preço Máximo"
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr "Pedido de compra recebido"
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr "Pedidos de Venda Feitos"
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr "Estoque produzido pelo Pedido de Produção"
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr "Estoque obrigatório para Pedido de Produção"
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr "Válido"
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr "Validar a Lista de Materiais completa"
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr "Esta opção deve ser selecionada"
@@ -5904,7 +5922,7 @@ msgstr "Estoque Total"
msgid "Input quantity for price calculation"
msgstr "Quantidade para o cálculo de preço"
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Categoria da Peça"
@@ -5919,7 +5937,7 @@ msgstr "Categorias de Peça"
msgid "Default location for parts in this category"
msgstr "Local padrão para peças desta categoria"
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr "Uma parte com este Nome, IPN e Revisão já existe."
msgid "Parts cannot be assigned to structural part categories!"
msgstr "Peças não podem ser atribuídas a categorias estruturais!"
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr "Nome da peça"
@@ -6009,9 +6027,9 @@ msgstr "Descrição da peça (opcional)"
msgid "Part keywords to improve visibility in search results"
msgstr "Palavras-chave para melhorar a visibilidade nos resultados da pesquisa"
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr "Estoque total disponível no momento do balanço"
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr "Data"
@@ -6328,556 +6346,572 @@ msgstr "Número de peças cobertas pelo Balanço"
msgid "User who requested this stocktake report"
msgstr "Usuário que solicitou este relatório de balanço"
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr "Modelos de teste só podem ser criados para peças rastreáveis"
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr "O teste com este nome já existe para esta peça"
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr "Nome de Teste"
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr "Insira um nome para o teste"
-#: part/models.py:3464
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
+msgstr ""
+
+#: part/models.py:3465
msgid "Test Description"
msgstr "Descrição do Teste"
-#: part/models.py:3465
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr "Digite a descrição para este teste"
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr "Requerido"
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr "Este teste é obrigatório passar?"
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr "Requer Valor"
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr "Este teste requer um valor ao adicionar um resultado de teste?"
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr "Anexo obrigatório"
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr "Este teste requer um anexo ao adicionar um resultado de teste?"
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr "Parâmetros da caixa de seleção não podem ter unidades"
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr "Os parâmetros da caixa de seleção não podem ter escolhas"
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr "Escolhas devem ser únicas"
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr "Nome do modelo de parâmetro deve ser único"
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr "Nome do Parâmetro"
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr "Unidades físicas para este parâmetro"
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr "Descrição do Parâmetro"
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr "Caixa de seleção"
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr "Este parâmetro é uma caixa de seleção?"
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr "Escolhas"
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr "Opções válidas para este parâmetro (separadas por vírgulas)"
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr "Escolha inválida para valor do parâmetro"
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr "Peça Paternal"
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr "Modelo de parâmetro"
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr "Dados"
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr "Valor do Parâmetro"
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr "Valor Padrão"
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr "Valor Padrão do Parâmetro"
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr "ID da peça ou nome da peça"
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr "Valor exclusivo do ID de peça"
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr "Valor da parte IPN"
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr "Nível"
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr "Nível da LDM"
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr "Selecione a Peça Parental"
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr "Sub peça"
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr "Selecionar peça a ser usada na LDM"
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr "Quantidade de LDM para este item LDM"
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr "Este item LDM é opcional"
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr "Este item LDM é consumível (não é rastreado nos pedidos de construção)"
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Excedente"
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "Quantidade estimada de desperdício (absoluto ou porcentagem)"
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr "Referência do Item LDM"
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr "Notas do Item LDM"
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr "Soma de verificação"
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr "Soma de Verificação da LDM da linha"
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr "Validado"
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr "O item da LDM foi validado"
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr "Obtém herdados"
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr "Este item da LDM é herdado por LDMs para peças variáveis"
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr "Permitir variações"
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr "Itens de estoque para as peças das variantes podem ser usados para este item LDM"
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr "Quantidade deve ser valor inteiro para peças rastreáveis"
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr "Sub peça deve ser especificada"
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr "Substituir Item da LDM"
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr "A peça de substituição não pode ser a mesma que a peça mestre"
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr "Item LDM Parental"
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr "Substituir peça"
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr "Parte 1"
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr "Parte 2"
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr "Selecionar Peça Relacionada"
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr "Relacionamento da peça não pode ser criada com ela mesma"
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr "Relação duplicada já existe"
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr "Moeda de compra deste item de estoque"
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr "Nenhuma parte selecionada"
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr "Selecionar categoria"
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr "Peça Original"
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr "Selecione a peça original para duplicar"
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr "Copiar imagem"
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr "Copiar imagem da peça original"
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr "Copiar LDM"
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr "Copiar lista de materiais da peça original"
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr "Copiar Parâmetros"
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr "Copiar dados do parâmetro da peça original"
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr "Copiar Notas"
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr "Copiar imagem da peça original"
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr "Quantidade Inicial de Estoque"
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr "Especificar a quantidade inicial de estoque para a peça. Se for zero, nenhum estoque é adicionado."
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr "Local Inicial do Estoque"
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr "Especifique o local do estoque inicial para esta Peça"
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr "Selecione o fornecedor (ou deixe em branco para pular)"
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr "Selecione fabricante (ou deixe em branco para pular)"
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr "Número de Peça do Fabricante"
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr "A empresa selecionada não é um fornecedor válido"
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr "A empresa selecionada não é um fabricante válido"
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr "A peça do fabricante que corresponde a essa MPN já existe"
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr "A peça do fornecedor que corresponde a essa SKU já existe"
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr "Peça duplicada"
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr "Copiar dados iniciais de outra peça"
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr "Estoque inicial"
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr "Criar peça com a quantidade inicial de estoque"
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr "Informações do Fornecedor"
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr "Adicionar informação inicial de fornecedor para esta peça"
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr "Copiar Parâmetros da Categoria"
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr "Copiar modelos de parâmetros a partir de categoria de peça selecionada"
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr "Imagem Existente"
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr "Nome de arquivo de uma imagem de peça existente"
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr "A imagem não existe"
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr "Limitar o relatório de balanço a uma determinada peça e quaisquer peças variantes"
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr "Limitar o relatório de balanço a uma determinada categoria, e qualquer peças filhas"
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr "Limitar o relatório de balanço a um determinado local de estoque, e qualquer local filho"
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr "Excluir Estoque externo"
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr "Excluir itens de estoque em locais externos"
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr "Gerar relatório"
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr "Gerar arquivo de relatório contendo dados de estoque calculados"
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr "Atualizar Peças"
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr "Atualizar peças especificadas com dados de estoque calculados"
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr "Função de Balanço de Estoque não está ativada"
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr "Sobrepor valor calculado para preço mínimo"
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr "Moeda do preço mínimo"
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr "Sobrepor valor calculado para preço máximo"
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr "Moeda do preço máximo"
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr "Atualizar"
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr "Atualizar preços desta peça"
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr "Não foi possível converter das moedas fornecidas para {default_currency}"
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr "Preço mínimo não pode ser maior que o preço máximo"
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr "Preço máximo não pode ser menor que o preço mínimo"
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr "Selecionar peça para copiar a LDM"
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr "Remover Dado Existente"
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr "Remova itens LDM existentes antes de copiar"
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr "Incluir Herdados"
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr "Incluir itens LDM que são herdados de peças modelo"
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr "Pular Linhas inválidas"
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr "Habilitar esta opção para pular linhas inválidas"
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr "Copiar Peças Substitutas"
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr "Copiar peças de substitutas quando duplicar itens de LDM"
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr "Limpar LDM Existente"
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr "Apagar itens LDM existentes antes de carregar"
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr "Nenhuma coluna de peça especificada"
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr "Múltiplas peças correspondentes encontradas"
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr "Nenhuma peça correspondente encontrada"
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr "Peça não está designada como componente"
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr "Quantidade não foi fornecida"
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr "Quantidade Inválida"
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr "Pelo menos um item LDM é necessário"
@@ -7040,7 +7074,7 @@ msgstr "Adicionar informações de balanço de estoque"
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr "Balanço"
@@ -7274,7 +7308,7 @@ msgstr "Peça inativa"
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr "Inativo"
@@ -7402,7 +7436,7 @@ msgstr "Variantes"
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr "Estoque"
@@ -7448,7 +7482,7 @@ msgstr "Editar"
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr "Última atualização"
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr "Método"
msgid "No author found"
msgstr "Nenhum autor encontrado"
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr "A extensão '{p}' não é compatível com a versão atual do InvenTree {v}"
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr "Extensão requer pelo menos a versão {v}"
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr "Extensão requer no máximo a versão {v}"
@@ -8361,7 +8395,7 @@ msgstr "Total"
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr "Resultados do teste"
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr "Teste"
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr "Resultado"
@@ -8416,7 +8450,7 @@ msgstr "Itens instalados"
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr "Série"
@@ -8500,48 +8534,48 @@ msgstr "Excluir quando esgotado"
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr "Data de validade"
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr "Localização externa"
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr "Árvore de Peças"
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr "Data de validade antes"
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr "Data de validade depois"
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr "Inativo"
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr "Quantidade obrigatória"
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr "Uma peça válida deve ser fornecida"
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr "A peça do fornecedor informado não existe"
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr "A peça do fornecedor tem um tamanho de pacote definido, mas o item use_pack_size não foi definida"
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr "Números de série não podem ser fornecidos para uma parte não rastreável"
@@ -8582,7 +8616,7 @@ msgstr "Selecionar Responsável"
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr "Os itens de estoque podem não estar diretamente localizados em um local de estoque estrutural, mas podem ser localizados em locais filhos."
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr "Externo"
@@ -8591,7 +8625,7 @@ msgstr "Externo"
msgid "This is an external stock location"
msgstr "Esta é uma localização de estoque externo"
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr "Tipo de localização"
@@ -8608,7 +8642,7 @@ msgstr "Você não pode tornar este local do estoque estrutural, pois alguns ite
msgid "Stock items cannot be located into structural stock locations!"
msgstr "Os itens de estoque não podem estar localizados em locais de estoque estrutural!"
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr "Item de estoque não pode ser criado para peças virtuais"
@@ -8653,7 +8687,7 @@ msgstr "Selecione uma peça do fornecedor correspondente para este item de estoq
msgid "Where is this stock item located?"
msgstr "Onde está localizado este item de estoque?"
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr "Embalagem deste item de estoque está armazenado em"
@@ -8665,7 +8699,7 @@ msgstr "Este item está instalado em outro item?"
msgid "Serial number for this item"
msgstr "Número de série para este item"
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr "Código do lote para este item de estoque"
@@ -8742,249 +8776,257 @@ msgstr "Números de série devem ser uma lista de números inteiros"
msgid "Quantity does not match serial numbers"
msgstr "A quantidade não corresponde aos números de série"
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr "Números de série já existem"
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr "Item em estoque foi reservado para um pedido"
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr "Item em estoque está instalado em outro item"
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr "item em estoque contem outro(s) items"
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr "Item em estoque foi reservado para outro cliente"
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr "Item no estoque está em produção no momento"
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr "Itens de série não podem ser mesclados"
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr "Item de estoque duplicado"
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr "Itens de estoque devem se referir à mesma peça"
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr "Itens de estoque devem se referir à mesma peça do fornecedor"
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr "Códigos de estado do estoque devem corresponder"
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Item do estoque não pode ser realocado se não houver estoque da mesma"
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr "Observações de entrada"
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr "Deve-se fornecer o valor desse teste"
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr "O anexo deve ser enviado para este teste"
-#: stock/models.py:2344
-msgid "Test name"
-msgstr "Nome de teste"
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr "Resultado do teste"
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr "Valor da saída do teste"
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr "Anexo do resultado do teste"
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr "Notas do teste"
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr "Número de série é muito grande"
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr "Usar tamanho do pacote ao adicionar: a quantidade definida é o número de pacotes"
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr "Preço de compra para este item de estoque, por unidade ou pacote"
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr "Insira o número de itens de estoque para serializar"
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr "Quantidade não deve exceder a quantidade disponível em estoque ({q})"
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr "Inserir número de série para novos itens"
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr "Local de destino do estoque"
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr "Campo opcional de notas"
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr "Números de série não podem ser atribuídos a esta peça"
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr "Selecione o item de estoque para instalar"
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr "Quantidade a Instalar"
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr "Insira a quantidade de itens a instalar"
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr "Adicionar nota de transação (opcional)"
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr "A quantidade para instalar deve ser pelo menos 1"
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr "Item de estoque indisponível"
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr "Peça selecionada não está na Lista de Materiais"
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr "Quantidade a instalar não deve exceder a quantidade disponível"
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr "Local de destino para o item desinstalado"
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr "Selecione peça para converter o item de estoque em"
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr "Peça selecionada não é uma opção válida para conversão"
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr "Não é possível converter o item de estoque com a Peça de Fornecedor atribuída"
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr "Local de destino para item retornado"
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr "Selecionar itens de estoque para mudar estados"
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr "Nenhum item de estoque selecionado"
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr "Parte deve ser comercializável"
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr "Item é alocado para um pedido de venda"
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr "Item está alocado a um pedido de produção"
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr "Cliente para atribuir itens de estoque"
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr "A empresa selecionada não é um cliente"
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr "Nodas atribuídas a estoque"
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr "Uma lista de item de estoque deve ser providenciada"
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr "Notas de fusão de estoque"
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr "Permitir fornecedores divergentes"
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr "Permitir a fusão de itens de estoque de fornecedores diferentes"
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr "Permitir estado incompatível"
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr "Permitir a fusão de itens de estoque com estado diferentes"
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr "Ao menos dois itens de estoque devem ser providenciados"
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr "Valor da chave primária do Item Estoque"
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr "Código de estado do item estoque"
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr "Notas da transação de estoque"
@@ -9009,7 +9051,7 @@ msgstr "Dados de teste"
msgid "Test Report"
msgstr "Relatório do teste"
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr "Excluir dados de teste"
@@ -9025,15 +9067,15 @@ msgstr "Notas de Item Estoque"
msgid "Installed Stock Items"
msgstr "Itens de Estoque Instalados"
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr "Instalar Item de Estoque"
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr "Excluir todos os resultados de teste deste item de estoque"
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr "Adicionar Resultado de Teste"
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr "Ações de ajuste de estoque"
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr "Contagem de estoque"
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr "Adicionar estoque"
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr "Remover estoque"
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr "Serializar estoque"
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr "Transferir estoque"
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr "Disponibilizar para o cliente"
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr "Nenhum balanço feito"
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr "item de estoque"
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr "Novo local"
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr "local de estoque"
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr "Taxa"
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr "Página Inicial"
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr "Confirmar endereço de e-mail"
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr "Por favor, confirme que %(email)s é um endereço de e-mail para o usuário %(user_display)s."
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "Confirmar"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr "Clique no link abaixo para ver esta peça"
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr "Quantidade Mínima"
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr "Nenhuma produção corresponde a consulta"
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr "Selecionar"
@@ -11262,7 +11304,7 @@ msgstr "Pedido de produção está atrasada"
msgid "Progress"
msgstr "Progresso"
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr "Sem informações de usuário"
@@ -11323,7 +11365,7 @@ msgstr "Item rastreado"
msgid "Build stock"
msgstr "Estoque de produção"
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr "Pedir Estoque"
@@ -11619,61 +11661,61 @@ msgstr "Limpar todos os filtros"
msgid "Create filter"
msgstr "Criar filtro"
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr "Ação proibida"
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr "Operação de criação não permitida"
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr "Operação de atualização não permitida"
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr "Operação de excluir não permitida"
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr "Operação de visualização não permitida"
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr "Manter este formulário aberto"
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr "Insira um número válido"
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr "Há erros de formulário"
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr "Nenhum resultado encontrado"
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr "Buscando"
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr "Limpar entrada"
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr "Coluna de arquivos"
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr "Nome do Campo"
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr "Selecionar Colunas"
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr "Nenhuma categoria"
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr "Visualizar como lista"
@@ -12162,7 +12204,7 @@ msgstr "Exibir como grade"
msgid "No subcategories found"
msgstr "Nenhuma subcategoria encontrada"
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr "Exibir como árvore"
@@ -12178,56 +12220,60 @@ msgstr "Categoria inscrita"
msgid "No test templates matching query"
msgstr "Nenhum modelo de teste corresponde à consulta"
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr "Editar resultados de teste"
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr "Excluir resultado do teste"
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr "Este teste é definido para uma peça parental"
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr "Editar Modelo de Resultado de Teste"
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr "Excluir Modelo de Resultado de Teste"
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr "Nenhuma data especificada"
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr "Data especificada está no passado"
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr "Especulativo"
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr "Nenhuma informação de agendamento para esta peça"
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr "Erro ao obter informações de agendamento para esta peça"
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr "Quantidades de Estoque Agendadas"
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr "Quantidade Máxima"
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr "Nível Mínimo de Estoque"
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr "Inserir entrada de pesquisa"
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr "Quantidade não pode ser ajustada para estoque serializado"
msgid "Specify stock quantity"
msgstr "Especifique quantidade no estoque"
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr "Selecionar Itens de Estoque"
@@ -13046,248 +13088,248 @@ msgstr "FALHOU"
msgid "NO RESULT"
msgstr "SEM RESULTADO"
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr "Passou no teste"
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr "Adicionar resultado de teste"
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr "Nenhum resultado de teste encontrado"
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr "Data do Teste"
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr "Editar Resultado do Teste"
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr "Excluir Resultado do Teste"
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr "Em produção"
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr "Instalado em Item de Estoque"
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr "Atribuir para o Pedido de Venda"
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr "Sem local de estoque definido"
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr "Mudar estado do estoque"
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr "Mesclar estoque"
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr "Excluir estoque"
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr "itens de estoque"
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr "Escanear para local"
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr "Ações de Estoque"
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr "Carregar itens instalados"
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr "Detalhes"
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr "Nenhuma mudança"
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr "Adicionado"
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr "Removido"
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr "Nenhum item instalado"
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr "O Item de Estoque conecta a uma peça que é um BOM deste Item de Estoque"
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po
index 68ab9f7807c2..0802d8ee2ab8 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
@@ -51,18 +51,18 @@ msgstr "Подробности об ошибке можно найти в пан
msgid "Enter date"
msgstr "Введите дату"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Введите дату"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Записи"
@@ -127,42 +127,42 @@ msgstr "Указанный домен электронной почты не у
msgid "Registration is disabled."
msgstr "Регистрация отключена."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "недопустимое количество"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Пустая строка серийного номера"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Повторяющийся серийный номер"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr "Недопустимый диапазон группы: {group}"
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Диапазон группы {group} превышает допустимое количество ({expected_quantity})"
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr "Неверная последовательность групп: {group}"
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Серийных номеров не найдено"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Число уникальных серийных номеров ({s}) должно соответствовать количеству ({q})"
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Удалить HTML теги из этого значения"
@@ -386,7 +386,7 @@ msgstr "Файл не найден"
msgid "Missing external link"
msgstr "Отсутствует внешняя ссылка"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Вложения"
msgid "Select file to attach"
msgstr "Выберите файл для вложения"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Комментарий"
msgid "File comment"
msgstr "Комментарий к файлу"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Пользователь"
@@ -474,9 +474,9 @@ msgstr "Повторяющиеся имена не могут существов
msgid "Invalid choice"
msgstr "Неверный выбор"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Неверный выбор"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Название"
@@ -500,8 +500,8 @@ msgstr "Название"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Название"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Название"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Описание"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "родитель"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Путь"
@@ -576,104 +576,104 @@ msgstr "Ошибка сервера"
msgid "An error has been logged by the server."
msgstr "Сервер зарегистрировал ошибку."
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Должно быть действительным номером"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Валюта"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr "Выберите валюту из доступных вариантов"
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr "У вас недостаточно прав для изменения роли этого пользователя."
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr "Только суперпользователи могут создавать новых пользователей"
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr "Ваша учётная запись была успешно создана."
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr "Добро пожаловать в InvenTree"
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Имя файла"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Неверное значение"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "Файл данных"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Выберите файл данных для загрузки"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Неподдерживаемый тип файла"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "Файл слишком большой"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "Столбцы в файле не найдены"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "Строки данных в файле не найдены"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Строки данных в файле не найдены"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Столбцы данных не предоставлены"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Отсутствует обязательный столбец: '{name}'"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Повторяющийся столбец: '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr "Удаленное изображение"
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "ССЫЛКА файла изображения на удаленном сервере"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "Загрузка изображений с удаленного URL-адреса не включена"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Проверка фонового работника не удалась"
@@ -813,7 +813,7 @@ msgstr "Отделить от родительского элемента"
msgid "Split child item"
msgstr "Разбить дочерний элемент"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Объединенные складские позиции"
@@ -833,7 +833,7 @@ msgstr "Продукция заказа на производство завер
msgid "Build order output rejected"
msgstr "Продукция заказа на производство отклонена"
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr "Поглощен заказом на производство"
@@ -933,14 +933,14 @@ msgstr "О программе InvenTree"
msgid "Build must be cancelled before it can be deleted"
msgstr "Заказ на производство должен быть отменен перед удалением"
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr "Расходники"
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr "Зарезервировано"
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr "Доступно"
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Заказ на производство"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "Ссылка на заказ на производство"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "Заказ на производство, которому принад
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "Заказ на производство, которому принад
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "Заказ на производство, которому принад
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Деталь"
@@ -1099,7 +1099,7 @@ msgstr "Ссылка на заказ"
msgid "SalesOrder to which this build is allocated"
msgstr "Заказ на продажу, которому принадлежит этот заказ на производство"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "Статус заказа на производство"
msgid "Build status code"
msgstr "Код статуса заказа на производство"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "Код партии"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "Код партии для продукции"
@@ -1258,27 +1258,32 @@ msgstr "Продукция уже произведена"
msgid "Build output does not match Build Order"
msgstr "Продукция не совпадает с заказом на производство"
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr "Количество должно быть больше нуля"
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr "Количество не может быть больше количества продукции"
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr "Объект производства"
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr "Объект производства"
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr "Объект производства"
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr "Объект производства"
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "Количество"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr "Требуемое количество для заказа на производство"
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Элемент производства должен указать продукцию, как главную деталь помеченную как отслеживаемая"
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr "Резервируемое количество ({q}) не должно превышать доступное количество на складе ({a})"
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr "Складская позиция перераспределена"
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr "Резервируемое количество должно быть больше нуля"
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr "Количество должно быть 1 для сериализованных запасов"
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr "Выбранная складская позиция не соответствует позиции в BOM"
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr "Выбранная складская позиция не соответ
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "Складская позиция"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr "Исходная складская позиция"
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr "Количество на складе для производства"
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr "Установить в"
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr "Целевая складская позиция"
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr "Выход Продукции"
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr "Продукция не совпадает с родительским заказом на производство"
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr "Продукция не соответствует детали заказа на производство"
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr "Эта продукция уже помечена как завершенная"
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr "Сырье для этой продукции не полностью зарезервировано"
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr "Введите количество продукции"
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr "Для отслеживаемых деталей должно быть указано целочисленное количество"
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr "Требуется целое количество, так как материал содержит отслеживаемые детали"
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "Серийные номера"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr "Введите серийные номера для продукции"
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr "Автоматически выделить серийные номера"
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Автоматически зарезервировать необходимые элементы с соответствующими серийными номерами"
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr "Следующие серийные номера уже существуют или недействительны"
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr "Необходимо представить список выхода деталей"
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr "Необходимо представить список выхода д
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr "Расположение"
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr "Место хранения для списанной продукции"
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr "Отменить резервирование"
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr "Отменить все резервы запасов для списанной продукции"
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr "Причина списания продукции"
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr "Место хранения для завершенной продукции"
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "Статус"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr "Разрешить неполное резервирование"
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr "Завершить продукцию, если запасы не были полностью распределены"
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr "Удалить зарезервированный запас"
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr "Вычесть запасы, которые уже были зарезервированы для этого производства"
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr "Удалить незавершенную продукцию"
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr "Удалить всю незавершенную продукцию"
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr "Запрещено"
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr "Принять как поглощенный этим заказом на производство"
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr "Отменить резерв, до завершения заказа на производство"
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr "Перераспределенные запасы"
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr "Как вы хотите обработать дополнительные складские позиции, назначенные для заказа на производство"
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr "Некоторые складские позиции были перераспределены"
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr "Разрешить не полное резервирование"
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr "Подтвердите, что складские позиции не были полностью зарезервированы для этого заказа на производство"
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr "Необходимые запасы не были полностью зарезервированы"
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr "Разрешить незавершенные производимые детали"
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr "Допустить, что требуемое кол-во продукции не завершено"
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr "Требуемое количество деталей не было произведено"
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr "Заказ на производство имеет незавершенную продукцию"
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr "Позиция для производства"
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr "Выход продукции"
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr "Продукция должна указывать на тот же производство"
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr "Позиция для производства"
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr "bom_item.part должна указывать на ту же часть, что и заказ на производство"
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr "Элемент должен быть в наличии"
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Превышено доступное количество ({q})"
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr "Продукция должна быть указан для резервирования отслеживаемых частей"
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr "Продукция не может быть указана для резервирования не отслеживаемых частей"
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr "Необходимо указать резервируемые элементы"
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Место хранения, где будут зарезервированы детали (оставьте пустым, чтобы забрать их из любого места)"
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr "Исключить место хранения"
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr "Исключить складские позиции из этого выбранного места хранения"
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr "Обменный остаток"
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Складские позиции в нескольких местах могут использоваться на взаимозаменяемой основе"
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr "Заменить остатки"
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr "Разрешить резервирование замещающих деталей"
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr "Необязательные элементы"
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr "Зарезервировать необязательные позиции BOM для заказа на производство"
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr "Позиция BOM"
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr "Зарезервированные Запасы"
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr "В заказе"
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr "В производстве"
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr "Завершенная продукция"
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr "Заказ на продажу"
@@ -1908,10 +1913,10 @@ msgstr "Зарезервированные детали"
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr "Недопустимое доменное имя: {domain}"
msgid "No plugin"
msgstr "Нет плагина"
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr "Требуется перезапуск"
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr "Настройки были изменены, что требует перезапуска сервера"
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr "Ожидаемые миграции"
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr "Количество ожидаемых миграций базы данных"
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr "Название сервера"
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr "Текстовое описание сервера"
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr "Название инстанса"
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr "Имя сервера в заголовке"
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr "Ограничить отображение `О...`"
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr "Показать `О...` только суперпользователям"
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr "Название компании"
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr "Внутреннее название компании"
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr "Базовая ссылка"
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr "Базовая ссылка для экземпляра сервера"
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr "Валюта по умолчанию"
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr "Выберите базовую валюту для расчета цены"
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr "Как часто обновлять курс валют (установите \"ноль\", чтобы выключить)"
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr "дней"
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr "Плагин обновления валют"
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr "Скачать по ссылке"
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr "Разрешить загрузку удаленных изображений и файлов по внешнему URL"
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr "Ограничение размера загрузки"
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr "Максимально допустимый размер загрузки для удалённого изображения"
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr "User-Agent, используемый для загрузки из URL"
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr "Позволяет переопределить user-Agent, используемый для загрузки изображений и файлов с внешнего URL (оставьте пустым по умолчанию)"
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr "Строгая проверка URL-адреса"
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr "Требуется спецификация схемы при проверке URL-адресов"
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr "Требуется подтверждение"
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr "Требовать явное подтверждение пользователя для определенного действия."
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr "Глубина дерева"
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr "Глубина дерева по умолчанию для просмотра дерева. Глубокие уровни загружены по мере необходимости."
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr "Интервал проверки обновлений"
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr "Как часто проверять наличие обновлений (установите ноль чтобы выключить)"
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr "Автоматическое резервное копирование"
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr "Включить автоматическое резервное копирование базы данных и медиа-файлов"
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr "Интервал резервного копирования"
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr "Укажите количество дней между событиями автоматического резервного копирования"
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr "Интервал удаления задачи"
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr "Результаты фоновых задач будут удалены после указанного количества дней"
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr "Интервал удаления журнала ошибок"
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr "Журналы ошибок будут удалены после указанного количества дней"
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr "Интервал удаления уведомления"
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr "Уведомления пользователя будут удалены после указанного количества дней"
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Поддержка штрих-кодов"
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr "Включить поддержку сканера штрих-кодов в веб-интерфейсе"
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr "Задержка сканирования штрих-кода"
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr "Время задержки обработки штрих-кода"
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr "Поддержка веб-камер штрих-кодов"
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr "Разрешить сканирование штрих-кода через веб-камеру в браузере"
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr "Ревизия детали"
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr "Шаблон регулярного выражения для сопоставления IPN детали"
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr "Разрешить повторяющиеся IPN"
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr "Разрешить редактирование IPN"
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr "Разрешить изменение значения IPN при редактировании детали"
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr "Скопировать данные BOM детали"
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr "Копировать данные BOM по умолчанию при дублировании детали"
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr "Скопировать данные параметров детали"
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr "Копировать данных параметров по умолчанию при дублировании детали"
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr "Скопировать данные тестирования детали"
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr "Копировать данные тестирования по умолчанию при дублировании детали"
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr "Скопировать параметры по шаблону категории"
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr "Копировать параметры по шаблону категории при создании детали"
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr "Шаблон"
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr "По умолчанию детали являются шаблонами"
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr "Производимая деталь"
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr "По умолчанию детали могут быть собраны из других компонентов"
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr "Компонент"
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr "По умолчанию детали могут использоваться в качестве суб-компонентов"
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr "Можно купить"
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr "По умолчанию детали являются отслеживаемыми"
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr "Можно продавать"
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr "Детали продаются по умолчанию"
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr "Отслеживание"
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr "По умолчанию детали являются отслеживаемыми"
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr "Виртуальная"
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr "Детали являются виртуальными по умолчанию"
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr "Показывать связанные детали"
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr "Исходные данные о поставщике"
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr "Использовать цены из складских позиций"
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr "Использовать расценки из ручного ввода данных о запасах для расчета цен"
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr "Возраст цен складских позиций"
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr "Исключить складские позиции старше указанного количества дней с расчёта цен"
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr "Только Активные Варианты"
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr "Интервал пересчета цен"
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr "Внутренние цены"
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr "Включить отчеты"
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr "Режим отладки"
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr "Размер страницы"
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr "При печати отчета о тестировании приложить копию тестового отчета к соответствующему складской позиции"
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr "Серийные номера для складских позиций должны быть уникальными глобально"
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr "Определяет поведение по умолчанию, когда складская позиция заканчивается"
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr "Шаблон для создания кодов партии по умолчанию для складских позиций"
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr "Срок годности Запасов"
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr "Время Залежалости Запасов"
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr "Количество дней перед тем как складская единица будет считаться просроченной"
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr "Использовать просроченные остатки в производстве"
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr "Разрешить использовать просроченные остатки в производстве"
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr "Показать установленные складские позиции"
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr "Отображать установленные складские позиции в складских таблицах"
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr "Паттерн ссылки заказа на производство"
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr "Поле требуемого паттерна для создания ссылки заказа на производство"
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr "Включить заказы на возврат"
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr "Редактировать завершенные заказы на покупку"
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr "Включить SSO"
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr "Необходимо указать EMail"
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr "Написать дважды"
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr "Пароль дважды"
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr "Разрешенные домены"
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr "Принудительное MFA"
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr "Пользователи должны использовать многофакторную безопасность."
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr "Проверять плагины при запуске"
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr "Исключить складские позиции во внешних местах хранения из инвентаризации"
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr "Показывать детали, на которые включены уведомления"
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr "Показывать детали, на которые включены уведомления, на главной странице"
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr "Показывать категории, на которые включены уведомления"
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr "Показывать категории, на которые включены уведомления, на главной странице"
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr "Показывать последние детали"
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr "Показывать последние детали на главной странице"
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr "Показывать непроверенные BOMы"
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr "Показывать BOMы, ожидающие проверки, на главной странице"
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr "Показывать изменившиеся складские запасы"
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr "Показывать складские позиции с недавно изменившимися запасами на главной странице"
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr "Показывать низкие складские запасы"
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr "Показывать складские позиции с низкими запасами на главной странице"
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr "Показывать закончившиеся складские позиции"
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr "Показывать закончившиеся складские позиции на главной странице"
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr "Показывать требуемые складские позиции"
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr "Показывать требуемые для производства складские позиции на главной странице"
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr "Показывать складские позиции с истекшим сроком годности"
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr "Показывать складские позиции с истёкшим сроком годности на главной странице"
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr "Показывать залежалые складские позиции"
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr "Показывать складские позиции с истекающим сроком годности на главной странице"
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr "Показывать незавершённые производства"
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr "Показывать незавершённые производства на главной странице"
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr "Показывать просроченные производства"
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr "Показывать просроченные производства на главной странице"
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr "Показать просроченные заказы на производство"
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr "Показать просроченные заказы на продажу"
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr "Показывать новости"
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr "Поиск Деталей"
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr "Поиск Запасов"
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr "Отображать складские позиции в окне предварительного просмотра поиска"
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr "Скрыть недоступные складские позиции"
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr "Исключить недоступные складские позиции из окна предварительного просмотра поиска"
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr "Поиск мест хранения"
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr "Поиск компаний"
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr "Поиск заказов на производство"
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr "Отображать заказы на производство в окне предварительного просмотра поиска"
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr "Поиск заказов на продажу"
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr "Поиск заказов на возврат"
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr "Поиск по Regex"
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr "Фиксированная панель навигации"
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr "Формат даты"
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Планирование деталей"
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr "Инвентаризация детали"
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr "Шаблон складской позиции по умолчанию"
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr "Шаблон метки складской позиции для автоматического выбора"
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr "Цена"
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr "Конечная точка"
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr "Активный"
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr "Токен"
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr "Токен для доступа"
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr "Секрет"
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr "ID Сообщения"
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr "Хост"
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr "Заголовок"
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr "Тело"
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr "Работал над"
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr "Код"
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr "Заголовок"
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr "Опубликовано"
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Автор"
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Итого"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr "Читать"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr "Изображение"
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr "Файл изображения"
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr "Название единицы"
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr "Символ"
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr "Определение"
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr "Для этой компании используется валюта
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr "Компания"
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Базовая деталь"
@@ -3953,7 +3967,7 @@ msgstr "Выберите деталь"
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr "Выберите производителя"
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr "Наименование параметра"
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr "Значение"
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr "Значение параметра"
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr "Поставщик"
msgid "Select supplier"
msgstr "Выберите поставщика"
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr "Код поставщика"
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr "Запись"
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr "Упаковка"
@@ -4199,13 +4213,13 @@ msgstr "Удалить изображение"
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr "Покупатель"
@@ -4463,7 +4477,7 @@ msgstr "Адреса"
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr "Деталь поставщика"
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr "Складские позиции"
@@ -4676,48 +4690,48 @@ msgstr "QR Код"
msgid "QR code"
msgstr "QR код"
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr "Неизвестно"
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr "Заказ на закупку"
@@ -4809,7 +4823,7 @@ msgstr "Заказ на закупку"
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr "Заказ на возврат"
@@ -5008,9 +5022,9 @@ msgstr "Получено"
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr "Закупочная цена"
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr "Отправление"
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr "Код детали"
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr "Наименование детали"
@@ -5743,7 +5757,7 @@ msgstr "Описание детали"
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr "Минимальная Стоимость"
msgid "Maximum Cost"
msgstr "Максимальная Стоимость"
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr "ID родителя"
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr "Имя родителя"
@@ -5824,7 +5838,7 @@ msgstr "Имя родителя"
msgid "Category Path"
msgstr "Путь к категории"
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr "Путь к категории"
msgid "Parts"
msgstr "Детали"
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr "Уровень BOM"
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr "ID Элемента BOM"
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr "Родительский IPN"
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr "IPN детали"
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr "Минимальная цена"
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr "Максимальная цена"
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr "Остатки произведенные заказом на производство"
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr "Остатки требуемые для заказов на производство"
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr "Корректный"
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr "Необходимо выбрать эту опцию"
@@ -5904,7 +5922,7 @@ msgstr "Общий запас"
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Категория детали"
@@ -5919,7 +5937,7 @@ msgstr "Категория детали"
msgid "Default location for parts in this category"
msgstr "Место хранения по умолчанию для деталей этой категории"
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr "Наименование детали"
@@ -6009,9 +6027,9 @@ msgstr "Описание детали (необязательно)"
msgid "Part keywords to improve visibility in search results"
msgstr "Ключевые слова для улучшения видимости в результатах поиска"
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr "Дата"
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr "Шаблоны тестирования могут быть созданы только для отслеживаемых деталей"
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr "Название теста"
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr "Введите имя для теста"
-#: part/models.py:3464
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
+msgstr ""
+
+#: part/models.py:3465
msgid "Test Description"
msgstr "Описание теста"
-#: part/models.py:3465
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr "Введите описание для этого теста"
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr "Требуется"
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr "Требуется значение"
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr "Название параметра"
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr "Чекбокс"
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr "Варианты"
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr "Родительская деталь"
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr "Шаблон параметра"
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr "Данные"
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr "Значение Параметра"
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr "Значение по умолчанию"
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr "Код или наименование детали"
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr "Значение IPN"
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr "Уровень"
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr "Уровень BOM"
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr "Выберите родительскую деталь"
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr "Суб-деталь"
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr "Выбрать деталь для использования в BOM"
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr "Эта позиция - расходник. (она не отслеживается в заказах на производство)"
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Перерасход"
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "Расчетное количество перерасходов производства (абсолютное или процентное)"
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr "Записи о позиции BOM"
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr "Контрольная сумма"
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr "Проверен"
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr "Разрешить разновидности"
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr "Складские позиции для разновидностей деталей могут быть использованы для этой позиции BOM"
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr "Для отслеживаемых деталей количество должно быть целым числом"
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr "Позиция BOM-родителя"
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr "Замена детали"
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr "Часть 1"
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr "Часть 2"
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr "Выберите связанную часть"
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr "Валюта закупки складской позиции"
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr "Не выбрана ни одна деталь"
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr "Выберите категорию"
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr "Оригинальная деталь"
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr "Копировать Изображение"
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr "Скопировать BOM"
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr "Скопировать параметры"
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr "Копировать Записи"
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr "Скопировать записи из оригинальной детали"
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr "Выберите поставщика (или оставьте поле пустым, чтобы пропустить)"
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr "Выберите поставщика (или оставьте поле пустым, чтобы пропустить)"
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr "Код производителя"
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr "Дублировать деталь"
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr "Начальный запас"
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr "Копировать параметры категории"
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr "Копировать шаблоны параметров из выбранной категории деталей"
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr "Существующее изображение"
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr "Исключить складские позиции в внешних местах хранения"
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr "Создать отчет"
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr "Обновить детали"
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr "Обновить"
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr "Подходящая деталь не найдена"
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr "Некорректное количество"
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr "Инвентаризация"
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr "Неактивный"
@@ -7402,7 +7436,7 @@ msgstr "Разновидности"
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr "Склад"
@@ -7448,7 +7482,7 @@ msgstr "Редактировать"
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr "Последнее обновление"
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr "Метод"
msgid "No author found"
msgstr "Автор не найден"
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr "Всего"
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr "Результаты тестирования"
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr "Тестирование"
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr "Результат"
@@ -8416,7 +8450,7 @@ msgstr "Установленные элементы"
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr "Серийный номер"
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr "Истекает"
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr "Древо Деталей"
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr "Залежалый"
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr "Необходимо указать количество"
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr "Выберите владельца"
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr "Складские позиции не могут находиться в структурных местах хранения, но могут находиться в дочерних местах хранения."
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr "Внешний"
@@ -8591,7 +8625,7 @@ msgstr "Внешний"
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr "Тип Места Хранения"
@@ -8608,7 +8642,7 @@ msgstr "Вы не можете сделать это место хранение
msgid "Stock items cannot be located into structural stock locations!"
msgstr "Складские позиции не могут находиться в структурных местах хранения!"
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr "Складская позиция не может быть создана для виртуальных деталей"
@@ -8653,7 +8687,7 @@ msgstr "Выберите соответствующего поставщика
msgid "Where is this stock item located?"
msgstr "Где находиться эта складская позиция?"
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr "Упаковка этой складской позиции хранится в"
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr "Код партии для этой складской позиции"
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr "Серийные номера уже существуют"
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr "Складская позиция была назначена заказу на продажу"
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr "Складская позиция установлена в другую деталь"
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr "Складская позиция содержит другие детали"
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr "Складская позиция была назначена покупателю"
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr "Складская позиция в производстве"
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
-msgstr "Дублировать складские позиции"
+msgstr "Дублировать складские позиции\n"
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr "Складские позиции должны ссылаться на одну и ту же деталь"
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr "Складские позиции должны ссылаться на одну и ту же деталь поставщика"
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr "Название теста"
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr "Результат тестирования"
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr "Записи Тестирования"
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr "Закупочная цена для этой складской позиции, за единицу или за упаковку"
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr "Введите количество складских позиций для сериализации"
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr "Введите серийные номера для новых элементов"
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr "Опциональное поле записей"
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr "Выберите складскую позицию для установки"
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr "Добавить запись к транзакции (необязательно)"
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr "Складская позиция недоступна"
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr "Выбранная деталь отсутствует в спецификации"
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr "Выберите деталь в которую будет преобразована складская позиция"
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr "Невозможно преобразовать складскую позицию с назначенной деталью поставщика"
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr "Выберите складские позиции для изменения статуса"
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr "Не выбрано ни одной складской позиции"
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr "Элемент зарезервирован для заказа на производство"
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr "Покупатель для назначения складских позиций"
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr "Выбранная компания не является покупателем"
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr "Записи о назначенных запасах"
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr "Необходимо предоставить список складских позиций"
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr "Записи о слияниях запасов"
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr "Разрешить слияние складских позиций с различными поставщиками"
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr "Разрешить слияние складских позиций с различными статусами"
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr "Необходимо предоставить как минимум 2 складские позиции"
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr "Статус складской позиции"
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr "Записи о перемещениях запасов"
@@ -9009,7 +9051,7 @@ msgstr "Данные тестов"
msgid "Test Report"
msgstr "Отчет тестирования"
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr "Удалить данные тестирования"
@@ -9025,15 +9067,15 @@ msgstr "Записи складской позиции"
msgid "Installed Stock Items"
msgstr "Установленные складские позиции"
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr "Установить складскую позицию"
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr "Удалить все результаты тестирования для этой складской позиции"
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr "Добавить Результат Тестирования"
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr "Установить запасы"
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr "Добавить Остатки"
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr "Удалить запасы"
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr "Сериализовать запасы"
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr "Переместить запасы"
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,9 +9261,9 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
-msgstr "складская позиция"
+msgstr "складская позиция\n"
#: stock/templates/stock/item_base.html:532
msgid "Edit Stock Status"
@@ -9257,7 +9299,7 @@ msgstr "Вернуть на склад"
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
-msgstr "Создать сериализированные позиции из этой складской позиции"
+msgstr "Создать сериализированные позиции из этой складской позиции\n"
#: stock/templates/stock/item_serialize.html:7
msgid "Select quantity to serialize, and unique serial numbers."
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr "Новое место хранения"
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr "места хранения"
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr "Главная страница"
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ 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:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "Подтвердить"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr "Минимальное количество"
@@ -10725,7 +10767,7 @@ msgstr ""
#: templates/js/translated/barcode.js:687
msgid "Stock Item already scanned"
-msgstr "Складская позиция уже просканирована"
+msgstr "Складская позиция уже просканирована\n"
#: templates/js/translated/barcode.js:691
msgid "Stock Item already in this location"
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr "Выбрать"
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr "Прогресс"
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr "Отслеживаемый элемент"
msgid "Build stock"
msgstr "Запасы производства"
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr "Заказать запасы"
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr "Создать фильтр"
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr "Форма содержит ошибки"
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr "Результаты не найдены"
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr "Поиск"
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr "Очистить ввод"
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr "Столбец Файла"
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr "Имя Поля"
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr "Выбрать столбцы"
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr "Нет категории"
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr "Отобразить списком"
@@ -12162,7 +12204,7 @@ msgstr "Отобразить сеткой"
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr "Отобразить древом"
@@ -12178,56 +12220,60 @@ msgstr "Категория с подпиской"
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr "результаты"
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr "Редактировать результаты тестирования"
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr "Приблизительный"
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr "Максимальное количество"
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr "Введите запрос для поиска"
msgid "result"
msgstr "результат"
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr "результаты"
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -12920,11 +12962,11 @@ msgstr ""
#: templates/js/translated/stock.js:555
msgid "Created new stock item"
-msgstr "Создана новая складская позиция"
+msgstr "Создана новая складская позиция\n"
#: templates/js/translated/stock.js:568
msgid "Created multiple stock items"
-msgstr "Создано несколько складских позиций"
+msgstr "Создано несколько складских позиций\n"
#: templates/js/translated/stock.js:593
msgid "Find Serial Number"
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr "Выбрать складские позиции"
@@ -13046,248 +13088,248 @@ msgstr "ПРОВАЛЕН"
msgid "NO RESULT"
msgstr "НЕТ РЕЗУЛЬТАТА"
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr "Тест пройден"
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr "Добавить Результат Тестирования"
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr "Данные Тестирования"
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr "В производстве"
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr "Установленные складские позиции"
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr "Изменить статус запасов"
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr "Объединить Запасы"
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr "Удалить запасы"
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr "складские позиции"
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr "Действия с Запасами"
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr "Складская позиция в производстве"
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr "Складская позиция зарезервирована заказом на продажу"
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr "Складская позиция была назначена покупателю"
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr "Сериализированная складская позиция была зарезервирована "
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr "Складские позиции были полностью зарезервированы"
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr "Складские позиции были частично зарезервированы"
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr "Складская позиция была установлена в другую деталь"
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr "Складская позиция была поглощена заказом на продажу"
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr "Складская позиция была просрочена"
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr "Складская позиция будет просрочена в скором времени"
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr "Складская позиция была отклонена"
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr "Складская позиция была утеряна"
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr "Складская позиция была уничтожена"
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr "Истощен"
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr "Кол-во Запаса"
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr "Нет складских позиций соответствующих запросу"
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr "места хранения"
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr "Подробности"
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr "Нет изменений"
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr "Складская позиция не существует"
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr "Добавлено"
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr "Удалено"
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr "Снять складскую позицию"
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr "Выберите складскую позицию для съема"
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr "Установить другую складскую позицию в эту деталь"
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr "Складские позиции могут быть установлены, только если отвечают следующим критериям"
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr "Складская позиция ссылается на деталь, чья спецификация является этой складской позицией"
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr "Складская позиция сейчас доступна на складе"
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr "Складская позиция не установлена в другую деталь"
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr "Складская позиция отслеживается либо по коду партии, либо серийному номеру"
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr "Выберите одну или более складских позиций"
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr "Выбранные складские позиции"
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr "Изменить статус запасов"
diff --git a/InvenTree/locale/sk/LC_MESSAGES/django.po b/InvenTree/locale/sk/LC_MESSAGES/django.po
index 55c8a7c09125..ba85196f1625 100644
--- a/InvenTree/locale/sk/LC_MESSAGES/django.po
+++ b/InvenTree/locale/sk/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Slovak\n"
"Language: sk_SK\n"
@@ -51,18 +51,18 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr ""
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr ""
@@ -127,42 +127,42 @@ msgstr ""
msgid "Registration is disabled."
msgstr ""
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr ""
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr ""
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr ""
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr ""
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr ""
@@ -386,7 +386,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr ""
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr ""
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr ""
@@ -474,9 +474,9 @@ msgstr ""
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr ""
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr ""
@@ -500,8 +500,8 @@ msgstr ""
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr ""
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr ""
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr ""
@@ -540,7 +540,7 @@ msgid "parent"
msgstr ""
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr ""
@@ -576,104 +576,104 @@ msgstr ""
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr ""
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr ""
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr ""
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr ""
@@ -813,7 +813,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr ""
@@ -833,7 +833,7 @@ msgstr ""
msgid "Build order output rejected"
msgstr ""
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr ""
@@ -933,14 +933,14 @@ msgstr ""
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr ""
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr ""
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr ""
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr ""
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr ""
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr ""
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr ""
@@ -1099,7 +1099,7 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr ""
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr ""
@@ -1258,27 +1258,32 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr ""
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr ""
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr ""
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr ""
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr ""
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr ""
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr ""
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr ""
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr ""
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr ""
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr ""
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr ""
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr ""
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr ""
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr ""
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr ""
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr ""
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr ""
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr ""
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr ""
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr ""
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr ""
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr ""
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr ""
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
@@ -3953,7 +3967,7 @@ msgstr ""
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr ""
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr ""
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr ""
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr ""
msgid "Select supplier"
msgstr ""
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr ""
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr ""
@@ -4199,13 +4213,13 @@ msgstr ""
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr ""
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr ""
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr ""
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr ""
@@ -4809,7 +4823,7 @@ msgstr ""
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr ""
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr ""
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr ""
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr ""
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr ""
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -5919,7 +5937,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr ""
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr ""
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr ""
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr ""
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -7448,7 +7482,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr ""
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr ""
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr ""
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/sl/LC_MESSAGES/django.po b/InvenTree/locale/sl/LC_MESSAGES/django.po
index da09935046c4..27fff466990d 100644
--- a/InvenTree/locale/sl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/sl/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Slovenian\n"
"Language: sl_SI\n"
@@ -51,18 +51,18 @@ msgstr "Napaka, podrobnosti vidne v pogledu administratorja"
msgid "Enter date"
msgstr "Vnesi datum"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Vnesi datum"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Zapiski"
@@ -127,42 +127,42 @@ msgstr "Domena epošte ni podprta."
msgid "Registration is disabled."
msgstr "Registracija je onemogočena."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Podana napačna količina"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Prazno polje serijske številke"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Dvojna serijska številka"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr "Neveljavni doseg skupine: {group}"
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Doseg skupine {group} presega dovoljene količine ({expected_quantity})"
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr "Nepravilno zaporedje skupine: {group}"
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Serijske številke niso najdene"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Število unikatnih serijskih številk ({len(serials)}) se mora ujemati s količino ({expected_quantity})"
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Odstranite oznako HTML iz te vrednosti"
@@ -386,7 +386,7 @@ msgstr "Manjka datoteka"
msgid "Missing external link"
msgstr "Manjka zunanja povezava"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Priloga"
msgid "Select file to attach"
msgstr "Izberite prilogo"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Komentar"
msgid "File comment"
msgstr "Komentar datoteke"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Uporabnik"
@@ -474,9 +474,9 @@ msgstr ""
msgid "Invalid choice"
msgstr "Nedovoljena izbira"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Nedovoljena izbira"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Ime"
@@ -500,8 +500,8 @@ msgstr "Ime"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Ime"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Ime"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Opis"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "nadrejen"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Pot"
@@ -576,104 +576,104 @@ msgstr "Napaka strežnika"
msgid "An error has been logged by the server."
msgstr "Zaznana napaka na strežniku."
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Mora biti veljavna številka"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr ""
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Ime datoteke"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Neveljavna vrednost"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "Podatki datoteke"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Izberite datoteke za naložiti"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Nepodprta vrsta datotek"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "Datoteka je prevelika"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "V datoteki ni bilo najdenih stolpcev"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "V datoteki ni bilo njadenih vrstic"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Niso bile podane vrste s podatki"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Niso bili podani stolpci s podatki"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Manjka obvezni stolpec: '{name}'"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Dvojni stolpec: '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "Povezava do oddaljene slike"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "Prenos slik iz oddaljene povezave ni omogočen"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Nadzor dela v ozadju neuspel"
@@ -813,7 +813,7 @@ msgstr "Razdeljena od nadrejene postavke"
msgid "Split child item"
msgstr "Razdeljena podrejena postavka"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Združena zaloga postavk"
@@ -833,7 +833,7 @@ msgstr "Nalog za izgradnjo končan"
msgid "Build order output rejected"
msgstr ""
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr "Porabljeno v nalogu za izgradnjo"
@@ -933,14 +933,14 @@ msgstr "O InvenTree"
msgid "Build must be cancelled before it can be deleted"
msgstr "Izgradnja mora biti najprej preklicana, nato je lahko izbrisana"
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr ""
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr ""
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Nalog izgradnje"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "Referenca naloga izgradnje"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "Nalog izgradnje na katerega se ta izgradnaj nanaša"
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "Nalog izgradnje na katerega se ta izgradnaj nanaša"
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "Nalog izgradnje na katerega se ta izgradnaj nanaša"
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Del"
@@ -1099,7 +1099,7 @@ msgstr "Referenca dobavnica"
msgid "SalesOrder to which this build is allocated"
msgstr "Dobavnica na katero se navezuje ta izgradnja"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "Status izgradnje"
msgid "Build status code"
msgstr "Koda statusa izgradnje"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "Številka serije"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "Številka serije za to izgradnjo"
@@ -1258,27 +1258,32 @@ msgstr "Igradnja je že dokončana"
msgid "Build output does not match Build Order"
msgstr "Izgradnja se ne ujema s nalogom izdelave"
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr ""
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr ""
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr ""
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr ""
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "Količina"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Izdelana postavka mora imeti izgradnjo, če je glavni del označen kot sledljiv"
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr "Prestavljena zaloga ({q}) ne sme presegati zaloge ({a})"
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr "Preveč zaloge je prestavljene"
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr "Prestavljena količina mora biti večja od 0"
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr "Količina za zalogo s serijsko številko mora biti 1"
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr ""
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "Postavka zaloge"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr "Izvorna postavka zaloge"
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr "Količina zaloge za prestavljanje za izgradnjo"
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr "Inštaliraj v"
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr "Destinacija postavke zaloge"
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr "Izgradnja"
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr "Izgradnja se ne ujema z nadrejeno izgradnjo"
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr "Izhodni del se ne ujema s naročilom sestava"
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr "Ta sestava je že zaključena"
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr ""
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr ""
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr ""
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr ""
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr ""
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr ""
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr ""
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr ""
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr ""
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr ""
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr ""
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr ""
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr ""
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr ""
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr ""
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
@@ -3953,7 +3967,7 @@ msgstr ""
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr ""
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr ""
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr ""
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr ""
msgid "Select supplier"
msgstr ""
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr ""
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr ""
@@ -4199,13 +4213,13 @@ msgstr ""
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr ""
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr ""
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr ""
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr ""
@@ -4809,7 +4823,7 @@ msgstr ""
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr ""
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr ""
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr ""
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr ""
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr ""
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -5919,7 +5937,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr ""
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr ""
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr ""
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr ""
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -7448,7 +7482,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr ""
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr ""
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr ""
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/sr/LC_MESSAGES/django.po b/InvenTree/locale/sr/LC_MESSAGES/django.po
index 3ec099fd6c93..2c94b494ce3d 100644
--- a/InvenTree/locale/sr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/sr/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Serbian (Latin)\n"
"Language: sr_CS\n"
@@ -51,18 +51,18 @@ msgstr "Detalji o grešci se mogu naći u admin sekciji"
msgid "Enter date"
msgstr "Unesite datum"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Unesite datum"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Napomene"
@@ -127,42 +127,42 @@ msgstr "Navedeni domen adrese e-pošte nije prihvaćen."
msgid "Registration is disabled."
msgstr "Registracija je onemogućena."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Isporučena nevažeća količina"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Serijski broj nije popunjen"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Dupliciraj serijski broj"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr "Nevažeći raspon grupe: {group}"
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Raspon grupe {group} prelazi dozvoljenu količinu ({expected_quantity})"
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr "Nevažeća sekvenca grupe: {group}"
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Nisu pronađeni serijski brojevi"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Broj jedinstvenih serijskih brojeva ({len(serials)}) mora odgovarati količini ({expected_quantity})"
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Uklonite HTML oznake iz ove vrednosti"
@@ -386,7 +386,7 @@ msgstr "Nedostaje datoteka"
msgid "Missing external link"
msgstr "Nedostaje eksterni link"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Prilog"
msgid "Select file to attach"
msgstr "Izaberite datoteku za prilog"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Komentar"
msgid "File comment"
msgstr "Datoteka komentara"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Korisnik"
@@ -474,9 +474,9 @@ msgstr "Dvostruka imena ne mogu postojati pod istom nadredjenom grupom"
msgid "Invalid choice"
msgstr "Nevažeći izvor"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Nevažeći izvor"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Ime"
@@ -500,8 +500,8 @@ msgstr "Ime"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Ime"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Ime"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Opis"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "nadređeni"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Putanja"
@@ -576,104 +576,104 @@ msgstr "Greška servera"
msgid "An error has been logged by the server."
msgstr "Server je zabležio grešku."
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Mora biti važeći broj"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Valuta"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr "Odaberite valutu među dostupnim opcijama"
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr "Nemate dozvolu za promenu ove korisničke uloge."
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr "Samo superkorisnici mogu kreirati nove korisnike"
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Ime datoteke"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Nevažeća vrednost"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "Datoteka"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Odaberite datoteku za učitavanje"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Nije podržan tip datoteke"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "Prevelika datoteka"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "Nisu pronađene kolone podataka u datoteci"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "Nisu pronađeni redovi podataka u datoteci"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Nisu navedeni redovi podataka"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Nisu obezbeđene kolone podataka"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Nedostaje potrebna kolona: '{name}'"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Duplicirana kolona: '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr "Udaljena slika"
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "URL udaljene slike"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "Preuzimanje slika s udaljenog URL-a nije omogućeno"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Provera pozadinskog radnika nije uspjela"
@@ -813,7 +813,7 @@ msgstr "Odvoj od nadređene stavke"
msgid "Split child item"
msgstr "Podeli podređenu stavku"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Spojene stavke zaliha"
@@ -833,7 +833,7 @@ msgstr ""
msgid "Build order output rejected"
msgstr ""
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr ""
@@ -933,14 +933,14 @@ msgstr ""
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr ""
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr ""
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Nalog za izradu"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "Reference naloga za pravljenje"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr ""
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr ""
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr ""
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr ""
@@ -1099,7 +1099,7 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr ""
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr ""
@@ -1258,27 +1258,32 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr ""
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr ""
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr ""
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr ""
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr ""
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr ""
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr ""
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr ""
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr ""
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr ""
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr ""
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr ""
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr ""
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr ""
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr ""
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr ""
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr ""
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr ""
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr ""
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr ""
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr ""
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr ""
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr ""
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr ""
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
@@ -3953,7 +3967,7 @@ msgstr ""
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr ""
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr ""
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr ""
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr ""
msgid "Select supplier"
msgstr ""
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr ""
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr ""
@@ -4199,13 +4213,13 @@ msgstr ""
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr ""
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr ""
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr ""
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr ""
@@ -4809,7 +4823,7 @@ msgstr ""
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr ""
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr ""
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr ""
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr ""
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr ""
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -5919,7 +5937,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr ""
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr ""
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr ""
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr ""
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -7448,7 +7482,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr ""
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr ""
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr ""
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/sv/LC_MESSAGES/django.po b/InvenTree/locale/sv/LC_MESSAGES/django.po
index 1d7171773217..437c3a93ab22 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
@@ -51,18 +51,18 @@ msgstr "Information om felet finns under Error i adminpanelen"
msgid "Enter date"
msgstr "Ange datum"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Ange datum"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Anteckningar"
@@ -127,42 +127,42 @@ msgstr "Den angivna e-postdomänen är inte godkänd."
msgid "Registration is disabled."
msgstr "Registrering är stängd."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Ogiltigt antal angivet"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Tom serienummersträng"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Serienummret finns redan"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr ""
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr ""
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Inga serienummer hittades"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Ta bort HTML-taggar från detta värde"
@@ -386,7 +386,7 @@ msgstr "Saknad fil"
msgid "Missing external link"
msgstr "Extern länk saknas"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Bilaga"
msgid "Select file to attach"
msgstr "Välj fil att bifoga"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Kommentar"
msgid "File comment"
msgstr "Fil kommentar"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Användare"
@@ -474,9 +474,9 @@ msgstr ""
msgid "Invalid choice"
msgstr "Ogiltigt val"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Ogiltigt val"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Namn"
@@ -500,8 +500,8 @@ msgstr "Namn"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Namn"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Namn"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Beskrivning"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "överordnad"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Sökväg"
@@ -576,104 +576,104 @@ msgstr "Serverfel"
msgid "An error has been logged by the server."
msgstr "Ett fel har loggats av servern."
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Måste vara ett giltigt nummer"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Valuta"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr "Välj valuta från tillgängliga alternativ"
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr "Ditt konto har skapats."
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr "Välkommen till InvenTree"
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Filnamn"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Ogiltigt värde"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "Datafil"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Välj fil för uppladdning"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Filtypen stöds inte"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "Filen är för stor"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "Inga kolumner hittades i filen"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "Inga rader hittades i filen"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Inga rader angivna"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Inga datakolumner har angetts"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Saknar obligatorisk kolumn: '{name}'"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Duplicerad kolumn: '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "URL för fjärrbildsfil"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "Nedladdning av bilder från fjärr-URL är inte aktiverad"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Kontroll av bakgrundsarbetare misslyckades"
@@ -813,7 +813,7 @@ msgstr "Dela från överordnat objekt"
msgid "Split child item"
msgstr "Dela underordnat objekt"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Sammanfogade lagerposter"
@@ -833,7 +833,7 @@ msgstr "Bygg orderutgång slutförd"
msgid "Build order output rejected"
msgstr ""
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr "Konsumeras av byggorder"
@@ -933,14 +933,14 @@ msgstr "Om InvenTree"
msgid "Build must be cancelled before it can be deleted"
msgstr "Byggnationen måste avbrytas innan den kan tas bort"
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr ""
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr ""
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Byggorder"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "Byggorderreferens"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "Byggorder till vilken detta bygge är tilldelad"
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "Byggorder till vilken detta bygge är tilldelad"
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "Byggorder till vilken detta bygge är tilldelad"
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Del"
@@ -1099,7 +1099,7 @@ msgstr "Försäljningsorderreferens"
msgid "SalesOrder to which this build is allocated"
msgstr "Försäljningsorder till vilken detta bygge allokeras"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "Byggstatus"
msgid "Build status code"
msgstr "Bygg statuskod"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "Batchkod"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "Batch-kod för denna byggutdata"
@@ -1258,27 +1258,32 @@ msgstr "Byggutgång är redan slutförd"
msgid "Build output does not match Build Order"
msgstr "Byggutgång matchar inte bygg order"
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr ""
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr ""
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr ""
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr ""
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "Antal"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Byggobjekt måste ange en byggutgång, eftersom huvuddelen är markerad som spårbar"
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr "Tilldelad kvantitet ({q}) får inte överstiga tillgängligt lagersaldo ({a})"
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr "Lagerposten är överallokerad"
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr "Allokeringsmängden måste vara större än noll"
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr "Antal måste vara 1 för serialiserat lager"
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr ""
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "Artikel i lager"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr "Källa lagervara"
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr "Lagersaldo att allokera för att bygga"
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr "Installera till"
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr "Destination lagervara"
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr "Bygg utdata"
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr "Byggutdata matchar inte överordnad version"
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "Serienummer"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr ""
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr "Plats"
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "Status"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr "Acceptera ofullständig"
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr ""
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr ""
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr ""
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr "Försäljningsorder"
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr "Omstart krävs"
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr "Serverinstans (Namn)"
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr "Företagsnamn"
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr "Internt företagsnamn"
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr "Bas-URL"
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr "Bas-URL för serverinstans"
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr "Standardvaluta"
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr "dagar"
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr "Ladda ned från URL"
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr "Tillåt nedladdning av bilder och filer från extern URL"
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr "Kräv bekräftelse"
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr "Kräv uttrycklig användarbekräftelse för vissa åtgärder."
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Stöd för streckkoder"
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr "Mall"
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr ""
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr ""
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr "Virtuell"
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr "Delar är virtuella som standard"
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr "Visa import i vyer"
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr "Visa importguiden i vissa delvyer"
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr "Visa relaterade delar"
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr "Visa relaterade delar för en del"
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr "Visningsformat för delnamn"
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr "Formatera för att visa artikelnamnet"
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr "Interna priser"
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr "Aktivera etikettutskrift"
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr "Aktivera etikettutskrift från webbgränssnittet"
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr "Etikettbild DPI"
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr "Aktivera rapporter"
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr "Aktivera generering av rapporter"
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr "Debugläge"
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr "Sidstorlek"
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr "Standard sidstorlek för PDF-rapporter"
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr "Aktivera testrapporter"
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr ""
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr "Tillåtna domäner"
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr "Aktivera projektkoder"
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr "Sök efter artiklar"
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr "Sök efter leverantörsartikel"
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr "Sök efter tillverkarartikel"
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr ""
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3686,7 +3700,7 @@ msgstr ""
#: common/serializers.py:345
msgid "Scheduled Tasks"
-msgstr ""
+msgstr "Schemalagda uppgifter"
#: common/serializers.py:351
msgid "Failed Tasks"
@@ -3849,7 +3863,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr "Företag"
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
@@ -3953,7 +3967,7 @@ msgstr ""
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr ""
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr ""
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr ""
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr "Leverantör"
msgid "Select supplier"
msgstr "Välj leverantör"
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr ""
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr ""
@@ -4199,13 +4213,13 @@ msgstr "Radera bild"
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr "Kund"
@@ -4463,7 +4477,7 @@ msgstr "Adresser"
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr ""
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr ""
@@ -4676,48 +4690,48 @@ msgstr "QR-kod"
msgid "QR code"
msgstr "QR-kod"
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr ""
@@ -4809,7 +4823,7 @@ msgstr ""
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr ""
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr ""
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr ""
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr ""
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr "Artiklar"
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -5919,7 +5937,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr ""
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr ""
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr ""
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr ""
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr "Välj kategori"
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr "Generera rapport"
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -7448,7 +7482,7 @@ msgstr "Redigera"
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr "Senast uppdaterad"
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr ""
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr ""
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr "Bekräfta e-postadress"
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "Bekräfta"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr "Rensa alla filter"
msgid "Create filter"
msgstr "Skapa filter"
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr "Inga resultat hittades"
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr "Söker"
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr "Ingen kategori"
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr "Inga underkategorier hittades"
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr "resultat"
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12564,7 +12610,7 @@ msgstr ""
#: templates/js/translated/report.js:140
msgid "No Reports Found"
-msgstr ""
+msgstr "Inga rapporter hittades"
#: templates/js/translated/report.js:141
msgid "No report templates found which match the selected items"
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr "resultat"
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr "resultat"
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,254 +13088,254 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr "Inga ändringar"
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
#: templates/js/translated/table_filters.js:74
msgid "Has project code"
-msgstr ""
+msgstr "Har projektkod"
#: templates/js/translated/table_filters.js:89
#: templates/js/translated/table_filters.js:601
diff --git a/InvenTree/locale/th/LC_MESSAGES/django.po b/InvenTree/locale/th/LC_MESSAGES/django.po
index 18f520298717..61d8daaeb646 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Thai\n"
"Language: th_TH\n"
@@ -51,18 +51,18 @@ msgstr ""
msgid "Enter date"
msgstr "ป้อนวันที่"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "ป้อนวันที่"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "หมายเหตุ"
@@ -127,42 +127,42 @@ msgstr ""
msgid "Registration is disabled."
msgstr ""
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "ปริมาณสินค้าไม่ถูกต้อง"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "หมายเลขซีเรียลซ้ำกัน"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr ""
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr ""
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "ไม่พบหมายเลขซีเรียล"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr ""
@@ -386,7 +386,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "ไฟล์แนบ"
msgid "Select file to attach"
msgstr "เลือกไฟล์ที่ต้องการแนบ"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "ความคิดเห็น"
msgid "File comment"
msgstr "ความเห็นของไฟล์"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "ผู้ใช้งาน"
@@ -474,9 +474,9 @@ msgstr ""
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr ""
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "ชื่อ"
@@ -500,8 +500,8 @@ msgstr "ชื่อ"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "ชื่อ"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "ชื่อ"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "คำอธิบาย"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr ""
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr ""
@@ -576,104 +576,104 @@ msgstr "เกิดข้อผิดพลาดที่เซิร์ฟเ
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "ต้องเป็นตัวเลข"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr ""
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "ชื่อไฟล์"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "ไฟล์ข้อมูล"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "เลือกไฟล์ข้อมูลที่จะอัปโหลด"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "ไฟล์มีขนาดใหญ่เกินไป"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr ""
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr ""
@@ -813,7 +813,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr ""
@@ -833,7 +833,7 @@ msgstr ""
msgid "Build order output rejected"
msgstr ""
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr ""
@@ -933,14 +933,14 @@ msgstr "เกี่ยวกับ Inventree"
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr ""
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr ""
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr ""
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr ""
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr ""
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr ""
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr ""
@@ -1099,7 +1099,7 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr ""
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr ""
@@ -1258,27 +1258,32 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr ""
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr ""
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr ""
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr ""
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr ""
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr ""
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr ""
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr ""
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr ""
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr ""
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr ""
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "สถานะ"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr ""
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr ""
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr ""
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr ""
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr ""
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr ""
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr ""
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr ""
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr ""
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr ""
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr ""
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr ""
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
@@ -3953,7 +3967,7 @@ msgstr ""
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr ""
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr ""
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr ""
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr ""
msgid "Select supplier"
msgstr ""
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr ""
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr ""
@@ -4199,13 +4213,13 @@ msgstr ""
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr ""
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr ""
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr ""
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr ""
@@ -4809,7 +4823,7 @@ msgstr ""
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr ""
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr ""
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr ""
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr ""
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr ""
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -5919,7 +5937,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr ""
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr ""
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr ""
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr ""
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -7448,7 +7482,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr ""
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr ""
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr ""
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po
index 4ea2d0523468..4550be23b3b1 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"Language: tr_TR\n"
@@ -51,18 +51,18 @@ msgstr "Hata detaylarını admin panelinde bulabilirsiniz"
msgid "Enter date"
msgstr "Tarih giriniz"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Tarih giriniz"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Notlar"
@@ -127,42 +127,42 @@ msgstr "Sağlanan e-posta alanı onaylanmadı."
msgid "Registration is disabled."
msgstr "Kayıt devre dışı."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Geçersiz veri sağlandı"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Boş seri numarası dizesi"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Yinelenen seri"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr "Geçersiz grup aralığı: {group}"
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Grup aralığı {group}, izin verilen miktarı aşmaktadır ({expected_quantity})"
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr "Geçersiz grup aralığı: {group}"
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Seri numarası bulunamadı"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Benzersiz seri numaralarının sayısı ({len(serials)}) ile miktarın ({expected_quantity}) eşleşmesi gerekmektedir"
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Bu değerden HTML etiketlerini kaldır"
@@ -386,7 +386,7 @@ msgstr "Eksik dosya"
msgid "Missing external link"
msgstr "Bozuk dış bağlantı"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Ek"
msgid "Select file to attach"
msgstr "Eklenecek dosyayı seç"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Yorum"
msgid "File comment"
msgstr "Dosya yorumu"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Kullanıcı"
@@ -474,9 +474,9 @@ msgstr ""
msgid "Invalid choice"
msgstr "Geçersiz seçim"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Geçersiz seçim"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Adı"
@@ -500,8 +500,8 @@ msgstr "Adı"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Adı"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Adı"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Açıklama"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "üst"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Yol"
@@ -576,104 +576,104 @@ msgstr "Sunucu Hatası"
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Geçerli bir numara olmalı"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Para birimi"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Dosya adı"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Geçersiz değer"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "Veri Dosyası"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Yüklemek istediğiniz dosyayı seçin"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Desteklenmeyen dsoya tipi"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "Dosya boyutu çok büyük"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "Dosyada kolon bulunamadı"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "Dosyada satır bulunamadı"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Dosyada satır bulunamadı"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Dosyada uygun kolon bulunamadı"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Gerekli kolon ismi eksik:'{name}'"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Tekrarlanan kolon ismi:'{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr ""
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Arka plan çalışanı kontrolü başarısız oldu"
@@ -813,7 +813,7 @@ msgstr "Üst ögeden ayır"
msgid "Split child item"
msgstr "Alt ögeyi ayır"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Stok parçalarını birleştir"
@@ -833,7 +833,7 @@ msgstr "Yapım emri çıktısı tamamlandı"
msgid "Build order output rejected"
msgstr ""
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr ""
@@ -933,14 +933,14 @@ msgstr "InvenTree Hakkında"
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr ""
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr ""
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr "Mevcut"
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Yapım İşi Emri"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "Yapım İşi Emri Referansı"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri"
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri"
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri"
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Parça"
@@ -1099,7 +1099,7 @@ msgstr "Satış Emri Referansı"
msgid "SalesOrder to which this build is allocated"
msgstr "Bu yapım işinin tahsis edildiği satış emri"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "Yapım İşi Durumu"
msgid "Build status code"
msgstr "Yapım işi durum kodu"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "Sıra numarası"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "Yapım işi çıktısı için sıra numarası"
@@ -1258,27 +1258,32 @@ 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:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr ""
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr ""
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr ""
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr ""
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "Miktar"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1373
+#: build/models.py:1378
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:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr "Stok kalemi fazladan tahsis edilmiş"
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr "Tahsis edilen miktar sıfırdan büyük olmalıdır"
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr "Seri numaralı stok için miktar bir olmalı"
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr ""
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "Stok Kalemi"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr "Kaynak stok kalemi"
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr "Yapım işi için tahsis edilen stok miktarı"
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr "Kurulduğu yer"
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr "Hedef stok kalemi"
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr ""
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr "Yapım işi çıktısı için miktarını girin"
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "Seri Numaraları"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr "Yapım işi çıktısı için seri numaraları girin"
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr ""
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr "Konum"
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "Durum"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr "Gerekli stok tamamen tahsis edilemedi"
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr "Gerekli yapım işi miktarı tamamlanmadı"
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr ""
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr ""
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr ""
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr "Sipariş Emri"
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr ""
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr "Şirket adı"
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr "Ana URL"
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr "Varsayılan Para Birimi"
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr "günler"
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr "URL'den indir"
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr "Harici URL'den resim ve dosyaların indirilmesine izin ver"
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Barkod Desteği"
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr "DPN Regex"
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr "Parça DPN eşleştirmesi için Düzenli İfade Kalıbı (Regex)"
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr "Yinelenen DPN'ye İzin Ver"
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr "Birden çok parçanın aynı DPN'yi paylaşmasına izin ver"
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr "DPN Düzenlemeye İzin Ver"
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr "Parçayı düzenlerken DPN değiştirmeye izin ver"
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr "Kategori Paremetre Sablonu Kopyala"
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr "Parça oluştururken kategori parametre şablonlarını kopyala"
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr "Şablon"
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr "Parçaları varsayılan olan şablondur"
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr "Montaj"
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr "Parçalar varsayılan olarak başka bileşenlerden monte edilebilir"
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr "Bileşen"
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr "Parçalar varsayılan olarak alt bileşen olarak kullanılabilir"
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr "Satın Alınabilir"
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr "Parçalar varsayılan olarak satın alınabilir"
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr "Satılabilir"
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr "Parçalar varsayılan olarak satılabilir"
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr "Takip Edilebilir"
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr "Parçalar varsayılan olarak takip edilebilir"
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr "Sanal"
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr "Parçalar varsayılan olarak sanaldır"
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr "İlgili parçaları göster"
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr "Hata Ayıklama Modu"
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr "Raporları hata ayıklama modunda üret (HTML çıktısı)"
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr "Sayfa Boyutu"
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr "PDF raporlar için varsayılan sayfa boyutu"
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr "Stok konumu ve ögeler üzerinde sahiplik kontrolünü etkinleştirin"
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr ""
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr "Formlarda Miktarı Göster"
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr "Fiyat"
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr "Aktif"
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr "Resim"
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr "Bu şirket için varsayılan para birimi"
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr ""
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Temel Parça"
@@ -3953,7 +3967,7 @@ msgstr "Parça seçin"
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr "Üretici seçin"
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr "Parametre adı"
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr "Değer"
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr "Parametre değeri"
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr "Tedarikçi"
msgid "Select supplier"
msgstr "Tedarikçi seçin"
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr "Not"
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr "Paketleme"
@@ -4199,13 +4213,13 @@ msgstr ""
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr "Müşteri"
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr "Tedarikçi Parçası"
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr "Stok Kalemleri"
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr ""
@@ -4809,7 +4823,7 @@ msgstr ""
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr ""
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr ""
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr ""
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr ""
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr "DPN"
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr "Parçalar"
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -5919,7 +5937,7 @@ msgstr "Parça Kategorileri"
msgid "Default location for parts in this category"
msgstr "Bu kategori içindeki parçalar için varsayılan konum"
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr "Parça adı"
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr ""
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
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:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr "Test Adı"
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
+msgstr ""
+
+#: part/models.py:3465
msgid "Test Description"
msgstr "Test Açıklaması"
-#: part/models.py:3465
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr "Gerekli"
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr "Testi geçmesi için bu gerekli mi?"
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr "Parametre şablon adı benzersiz olmalıdır"
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr "Parametre Şablonu"
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
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:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr "Çeşide İzin Ver"
-#: part/models.py:4042
+#: part/models.py:4043
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:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr "Pasif"
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr "Stok"
@@ -7448,7 +7482,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr "Seri No"
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr "Bu stok kalemi için tedarikçi parçası seçin"
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr "Bu öge için seri numarası"
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr "Seri numaraları tam sayı listesi olmalı"
msgid "Quantity does not match serial numbers"
msgstr "Miktar seri numaları ile eşleşmiyor"
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr "Seri numaraları zaten mevcut"
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Stok kalemi stokta olmadığı için taşınamaz"
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr "İşlem notu ekle (isteğe bağlı)"
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr "Stok ayarlama işlemleri"
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr "Stoku seri numarala"
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr "Yeni Konum"
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "Onay"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.po b/InvenTree/locale/vi/LC_MESSAGES/django.po
index 33c3d201e0f2..78102da2a9f8 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Vietnamese\n"
"Language: vi_VN\n"
@@ -51,18 +51,18 @@ msgstr "Chi tiết lỗi có thể được tìm thấy trong bảng quản tr
msgid "Enter date"
msgstr "Nhập ngày"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "Nhập ngày"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "Ghi chú"
@@ -127,42 +127,42 @@ msgstr "Miền email được cung cấp không được phê duyệt."
msgid "Registration is disabled."
msgstr "Đăng ký bị vô hiệu hóa."
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "Số lượng cung cấp không hợp lệ"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "Chuỗi số sê-ri trống"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "Trùng lặp sê-ri"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr "Phạm vi nhóm không hợp lệ: {group}"
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Khoảng nhóm {group} vượt cho phép số lượng ({expected_quantity})"
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr "Thứ tự nhóm không hợp lệ: {group}"
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "Không tìm thấy số sê-ri"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Số sê ri duy nhất ({len(serials)}) phải phù hợp số lượng ({expected_quantity})"
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "Xóa thẻ HTML từ giá trị này"
@@ -386,7 +386,7 @@ msgstr "Tập tin bị thiếu"
msgid "Missing external link"
msgstr "Thiếu liên kết bên ngoài"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "Đính kèm"
msgid "Select file to attach"
msgstr "Chọn file đính kèm"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "Bình luận"
msgid "File comment"
msgstr "Bình luận tệp tin"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "Người dùng"
@@ -474,9 +474,9 @@ msgstr "Tên trùng lặp không thể tồn tại trong cùng cấp thư mục"
msgid "Invalid choice"
msgstr "Lựa chọn sai"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "Lựa chọn sai"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "Tên"
@@ -500,8 +500,8 @@ msgstr "Tên"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "Tên"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "Tên"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "Mô tả"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "thư mục cha"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "Đường dẫn"
@@ -576,104 +576,104 @@ msgstr "Lỗi máy chủ"
msgid "An error has been logged by the server."
msgstr "Lỗi đã được ghi lại bởi máy chủ."
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "Phải là một số hợp lệ"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "Tiền tệ"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr "Chọn tiền tệ trong các tùy chọn đang có"
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr "Bạn không có quyền thay đổi vai trò của người dùng này."
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr "Chỉ có siêu người dùng là có thể tạo người dùng mới"
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr "Tài khoản của bạn đã được tạo."
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr "Xin hãy sử dụng chức năng tạo lại mật khẩu để đăng nhập"
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr "Chào mừng đến với InvenTree"
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "Tên tập tin"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "Giá trị không hợp lệ"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "Tập tin dữ liệu"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "Chọn tệp tin để tải lên"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "Loại tệp tin không được hỗ trợ"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "Tệp tin quá lớn"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "Không tìm thấy cột nào trong tệp tin"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "Không tìm thấy dòng nào trong tệp tin"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "Chưa có dữ liệu"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "Chưa cung cấp cột dữ liệu"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Thiếu cột bắt buộc: '{name}'"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Nhân bản cột: '{col}'"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr "Hình ảnh từ xa"
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "URL của tệp hình ảnh bên ngoài"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "Chức năng tải hình ảnh từ URL bên ngoài không được bật"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "Nhân công chạy ngầm kiểm tra thất bại"
@@ -813,7 +813,7 @@ msgstr "Tách từ mục cha"
msgid "Split child item"
msgstr "Tách mục con"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "Kho hàng đã được gộp"
@@ -833,7 +833,7 @@ msgstr "Đầu ra đơn đặt bản dựng đã hoàn thành"
msgid "Build order output rejected"
msgstr "Đầu ra đơn đặt bản dựng bị từ chối"
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr "Tiêu hao bởi đơn đặt bản dựng"
@@ -933,14 +933,14 @@ msgstr "Giới thiệu"
msgid "Build must be cancelled before it can be deleted"
msgstr "Bạn dựng phải được hủy bỏ trước khi có thể xóa được"
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr "Vật tư tiêu hao"
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr "Đã cấp phát"
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr "Có sẵn"
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "Tạo đơn hàng"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "Tham chiếu đơn đặt bản dựng"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "Đơn đặt bản dựng với bản dựng này đã được phân b
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "Đơn đặt bản dựng với bản dựng này đã được phân b
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "Đơn đặt bản dựng với bản dựng này đã được phân b
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "Nguyên liệu"
@@ -1099,7 +1099,7 @@ msgstr "Tham chiếu đơn đặt bản dựng"
msgid "SalesOrder to which this build is allocated"
msgstr "Đơn đặt bán hàng với bản dựng này đã được phân bổ"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "Trnạg thái bản dựng"
msgid "Build status code"
msgstr "Mã trạng thái bản dựng"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "Mã lô hàng"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "Mã lô cho đầu ra bản dựng này"
@@ -1258,27 +1258,32 @@ msgstr "Đầu ra bản dựng đã được hoàn thiện"
msgid "Build output does not match Build Order"
msgstr "Đầu ra bản dựng không phù hợp với đơn đặt bản dựng"
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr "Số lượng phải lớn hơn 0"
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr "Số lượng không thể lớn hơn số lượng đầu ra"
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr "Dựng đối tượng"
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr "Dựng đối tượng"
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr "Dựng đối tượng"
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr "Dựng đối tượng"
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "Số lượng"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr "Yêu cầu số lượng để dựng đơn đặt"
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Xây dựng mục phải xác định đầu ra, bởi vì sản phẩm chủ được đánh dấu là có thể theo dõi"
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr "Số lượng được phân bổ ({q}) không thể vượt quá số lượng có trong kho ({a})"
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr "Kho hàng đã bị phân bổ quá đà"
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr "Số lượng phân bổ phải lớn hơn 0"
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr "Số lượng phải là 1 cho kho sê ri"
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr "Hàng trong kho đã chọn không phù hợp với đường BOM"
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr "Hàng trong kho đã chọn không phù hợp với đường BOM"
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "Kho hàng"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr "Kho hàng gốc"
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr "Số lượng kho hàng cần chỉ định để xây dựng"
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr "Cài đặt vào"
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr "Kho hàng đích"
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr "Đầu ra bản dựng"
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr "Đầu ra xây dựng không hợp với bản dựng cha"
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr "Đầu ra sản phẩm không phù hợp với bản dựng đơn đặt hàng"
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr "Đầu ra bản dựng này đã được hoàn thành"
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr "Đầu ra bản dựng này chưa được phân bổ đầy đủ"
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr "Điền số lượng cho đầu ra bản dựng"
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr "Số lượng nguyên dương cần phải điền cho sản phẩm có thể theo dõi"
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr "Cần nhập số lượng nguyên dương, bởi vì hóa đơn vật liệu chứa sản phẩm có thể theo dõi"
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "Số sê-ri"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr "Nhập vào số sêri cho đầu ra bản dựng"
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr "Số sêri tự cấp"
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Tự động cấp số seri phù hợp cho hàng hóa được yêu cầu"
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr "Số sêri sau đây đã tồn tại hoặc không hợp lệ"
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr "Danh sách đầu ra bản dựng phải được cung cấp"
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr "Danh sách đầu ra bản dựng phải được cung cấp"
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr "Địa điểm"
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr "Vị trí kho cho đầu ra phế phẩm"
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr "Hủy phân bổ"
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr "Hủy bất kỳ phân kho nào cho đầu ra phế phẩm"
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr "Lý do loại bỏ đầu ra bản dựng"
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr "Vị trí cho đầu ra bản dựng hoàn thiện"
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "Trạng thái"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr "Chấp nhận phân kho dang dở"
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr "Hoàn hiện đầu ra nếu kho chưa được phân bổ hết chỗ trống"
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr "Xóa phân kho"
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr "Trừ số lượng bất kỳ kho nào được phân bổ đến bản dựng này"
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr "Xóa toàn bộ đầu ra chưa hoàn thành"
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr "Xóa bất kỳ đầu ra bản dựng nào chưa được hoàn thành"
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr "Chưa được cấp phép"
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr "Chấp nhận trạng thái tiêu hao bởi đơn đặt bản dựng này"
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr "Phân bổ trước khi hoàn thiện đơn đặt bản dựng này"
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr "Kho quá tải"
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr "Bạn muốn thế nào để xử lý hàng trong kho được gán thừa cho đơn đặt bản dựng"
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr "Một vài hàng hóa đã được phân bổ quá thừa"
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr "Chấp nhận chưa phân bổ được"
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr "Chấp nhận hàng hóa không được phân bổ đầy đủ vào đơn đặt bản dựng này"
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr "Kho được yêu cầu chưa được phân bổ hết không gian"
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr "Chấp nhận không hoàn thành"
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr "Chấp nhận số yêu cầu của đầu ra bản dựng chưa được hoàn thành"
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr "Số lượng bản dựng được yêu cầu chưa được hoàn thành"
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr "Đơn đặt bản dựng có đầu ra chưa hoàn thiện"
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr "Lộ giới"
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr "Đầu ra bản dựng"
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr "Đầu ra bản dựng phải chỉ đến bản dựng tương ứng"
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr "Mục chi tiết bản dựng"
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr "bom_item.part phải trỏ đến phần tương tự của đơn đặt bản dựng"
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr "Hàng hóa phải trong kho"
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Số lượng có sẵn ({q}) đã bị vượt quá"
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr "Đầu ra bản dựng phải được xác định cho việc phân sản phẩm được theo dõi"
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr "Đầu ra bản dựng không thể chỉ định cho việc phân sản phẩm chưa được theo dõi"
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr "Hàng hóa phân bổ phải được cung cấp"
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Vị trí kho nơi sản phẩm được lấy ra (để trống để lấy từ bất kỳ vị trí nào)"
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr "Ngoại trừ vị trí"
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr "Không bao gồm hàng trong kho từ vị trí đã chọn này"
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr "Kho trao đổi"
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Hàng trong kho thuộc nhiều vị trí có thể dùng thay thế được cho nhau"
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr "Kho thay thế"
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr "Cho phép phân kho sản phẩm thay thế"
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr "Mục tùy chọn"
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr "Phân bổ các mục hóa đơn vật liệu tùy chọn đến đơn đặt bản dựng"
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr "Mục BOM"
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr "Bật đơn hàng"
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr "Đang sản xuất"
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr "Đầu ra hoàn thiện"
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr "Đơn đặt hàng"
@@ -1908,10 +1913,10 @@ msgstr "Sản phẩm đã phân bổ"
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr "Tên miền không hợp lệ: {domain}"
msgid "No plugin"
msgstr "Không phần mở rộng"
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr "Cần khởi động lại"
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr "Một thiết lập đã bị thay đổi yêu cầu khởi động lại máy chủ"
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr "Chuyển dữ liệu chờ xử lý"
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr "Số đợt nâng cấp cơ sở dữ liệu chờ xử lý"
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr "Tên thực thể máy chủ"
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr "Mô tả chuỗi cho thực thể máy chủ"
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr "Sử dụng tên thực thể"
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr "Sử dụng tên thực thể trên thanh tiêu đề"
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr "Cấm hiển thị `giới thiệu`"
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr "Chỉ hiển thị cửa sổ `giới thiệu` với siêu người dùng"
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr "Tên công ty"
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr "Tên công ty nội bộ"
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr "URL cơ sở"
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr "URL cơ sở cho thực thể máy chủ"
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr "Tiền tệ mặc định"
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr "Chọn tiền tệ chính khi tính giá"
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr "Tần suất cập nhật tiền tệ"
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr "Mức độ thường xuyên để cập nhật tỉ giá hối đoái (điền 0 để tắt)"
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr "ngày"
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr "Phần mở rộng cập nhật tiền tệ"
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr "Phần mở rộng cập nhật tiền tệ được sử dụng"
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr "Tải về từ URL"
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr "Cho phép tải ảnh và tệp tin từ xa theo URL bên ngoài"
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr "Giới hạn kích thước tải xuống"
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr "Kích thước tải xuống tối đa với hình ảnh từ xa"
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr "User-agent được dùng để tải xuống theo URL"
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr "Cho phép ghi đè user-agent được dùng để tải về hình ảnh và tệp tin từ xa theo URL bên ngoài (để trống nghĩa là dùng mặc định)"
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr "Yêu cầu xác nhận"
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr "Yêu cầu người dùng xác nhận rõ ràng với một số chức năng nhất định."
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr "Cấp độ cây"
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr "Độ sâu cây mặc định cho màn hình cây. Cấp độ sâu hơn sẽ sử dụng kỹ thuật tải chậm nếu cần thiết."
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr "Thời gian kiểm tra bản cập nhật"
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr "Mức độ thường xuyên để kiểm tra bản cập nhật (điền 0 để tắt)"
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr "Sao lưu tự động"
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr "Bật tính năng sao lưu tự động cơ sở dữ liệu và tệp tin đa phương tiện"
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr "Khoảng thời gian sao lưu tự động"
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr "Xác định số ngày giữa các kỳ sao lưu tự động"
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr "Khoảng thời gian xóa tác vụ"
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr "Kết quả tác vụ chạy ngầm sẽ bị xóa sau số ngày được chỉ định"
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr "Khoảng thời gian xóa nhật ký lỗi"
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr "Nhật ký lỗi sẽ bị xóa sau số ngày được chỉ định"
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr "Khoảng thời gian xóa thông báo"
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr "Thông báo sẽ bị xóa sau số ngày được chỉ định"
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Hỗ trợ mã vạch"
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr "Bật hỗ trợ máy quét mã vạch trong giao diện web"
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr "Độ trễ quét mã vạch"
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr "Thời gian trễ xử lý đầu đọc mã vạch"
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr "Hỗ trợ mã vạch qua webcam"
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr "Cho phép quét mã vạch qua webcam bên trong trình duyệt"
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr "Phiên bản Sản phẩm"
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr "Bật trường phiên bản cho sản phẩm"
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr "Mẫu IPN"
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr "Mẫu dùng nhanh phổ biến dành cho tìm IPN sản phẩm"
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr "Cho phép trùng IPN"
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr "Cho phép nhiều sản phẩm dùng IPN giống nhau"
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr "Cho phép sửa IPN"
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr "Cho phép đổi giá trị IPN khi sửa một sản phẩm"
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr "Sao chép dữ liệu BOM của sản phẩm"
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr "Sao chép dữ liệu BOM mặc định khi nhân bản 1 sản phẩm"
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr "Sao chép dữ liệu tham số sản phẩm"
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr "Sao chép dữ liệu tham số mặc định khi nhân bản 1 sản phẩm"
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr "Chép thông tin kiểm thử sản phẩm"
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr "Sao chép dữ liệu kiểm thử mặc định khi nhân bản 1 sản phẩm"
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr "Sao chéo mẫu tham số danh mục"
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr "Sao chéo mẫu tham số danh mục khi tạo 1 sản phẩm"
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr "Mẫu"
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr "Sản phẩm là mẫu bởi mặc định"
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr "Lắp ráp"
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr "Sản phẩm có thể lắp giáp từ thành phần khác theo mặc định"
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr "Thành phần"
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr "Sản phẩm có thể được sử dụng mặc định như thành phần phụ"
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr "Có thể mua"
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr "Sản phẩm mặc định có thể mua được"
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr "Có thể bán"
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr "Sản phẩm mặc định có thể bán được"
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr "Có thể theo dõi"
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr "Sản phẩm mặc định có thể theo dõi được"
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr "Ảo"
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr "Sản phẩm mặc định là số hóa"
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr "Hiển thị Nhập liệu trong khung xem"
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr "Hiển thị đồ thuật nhập dữ liệu trong một số khung nhìn sản phẩm"
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr "Hiển thị sản phẩm liên quan"
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr "Hiện sản phẩm liên quan cho 1 sản phẩm"
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr "Số liệu tồn kho ban đầu"
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr "Cho phép tạo tồn kho ban đầu khi thêm 1 sản phẩm mới"
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr "Dữ liệu nhà cung cấp ban đầu"
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr "Cho phép tạo dữ liệu nhà cung cấp ban đầu khi thêm 1 sản phẩm mới"
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr "Định dạng tên sản phẩm hiển thị"
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr "Định dạng để hiển thị tên sản phẩm"
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr "Biểu tượng mặc định của danh mục sản phẩm"
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr "Biểu tượng mặc định của danh mục sản phẩm (để trống nghĩa là không có biểu tượng)"
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr "Bắt buộc đơn vị tham số"
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr "Nếu đơn vị được cung cấp, giá trị tham số phải phù hợp với các đơn vị xác định"
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr "Vị trí phần thập phân giá bán tối thiểu"
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr "Số vị trí thập phân tối thiểu cần hiển thị khi tạo dữ liệu giá"
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr "Vị trí phần thập phân giá bán tối đa"
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr "Số vị trí thập phân tối đa cần hiển thị khi tạo dữ liệu giá"
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr "Sử dụng giá bán nhà cung cấp"
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr "Bao gồm giá phá vỡ cả nhà cung cấp trong tính toán giá tổng thể"
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr "Ghi đè lịch sử mua hàng"
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr "Giá đơn hàng đặt mua trước đó ghi đè giá phá vỡ của nhà cung cấp"
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr "Sử dụng giá hàng hóa trong kho"
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr "Dùng giá bán từ dữ liệu kho nhập vào thủ công đối với bộ tính toán giá bán"
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr "Tuổi giá kho hàng"
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr "Loại trừ hàng hóa trong kho cũ hơn số ngày ngày từ bảng tính giá bán"
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr "Sử dụng giá biến thể"
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr "Bao gồm giá biến thể trong bộ tính toán giá tổng thể"
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr "Chỉ các biến thể hoạt động"
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr "Chỉ sử dụng sản phẩm biến thể hoạt động để tính toán giá bán biến thể"
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr "Tần suất tạo lại giá"
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr "Số ngày trước khi giá sản phẩm được tự động cập nhật"
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr "Giá nội bộ"
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr "Bật giá nội bộ cho sản phẩm"
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr "Ghi đè giá nội bộ"
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr "Nếu khả dụng, giá nội bộ ghi đè tính toán khoảng giá"
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr "Bật in tem nhãn"
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr "Bật chức năng in tem nhãn từ giao diện web"
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr "DPI hỉnh ảnh tem nhãn"
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr "Độ phân giải DPI khi tạo tệp hình ảnh để cung cấp cho plugin in ấn tem nhãn"
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr "Bật báo cáo"
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr "Cho phép tạo báo cáo"
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr "Chế độ gỡ lỗi"
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr "Tạo báo cáo trong chế độ gỡ lỗi (đầu ra HTML)"
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr "Khổ giấy"
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr "Kích thước trang mặc định cho báo cáo PDF"
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr "Bật báo cáo kiểm thử"
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr "Cho phép tạo báo cáo kiểm thử"
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr "Đính kèm báo cáo kiểm thử"
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr "Khi in một báo cáo kiểm thử, đính kèm một bản sao của báo cáo kiểm thử với hàng trong kho đã được kết hợp"
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr "Sê ri toàn cục duy nhất"
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr "Số sê ri cho hàng trong kho phải là duy nhất trong toàn hệ thống"
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr "Tự động điền số sê ri"
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr "Tự động điền số sê ri vào biểu mẫu"
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr "Xóa kho đã hết hàng"
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr "Nhận dạng hành vi mặc định khi hàng trong kho bị hết"
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr "Mẫu sinh mã theo lô"
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr "Mẫu tạo mã theo lô mặc định cho hàng trong kho"
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr "Quá hạn trong kho"
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr "Bật chức năng quá hạn tồn kho"
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr "Bán kho quá hạn"
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr "Cho phép bán hàng kho quá hạn"
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr "Thời gian hàng cũ trong kho"
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr "Số ngày hàng trong kho được xác định là cũ trước khi quá hạn"
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr "Dựng kho quá hạn"
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr "Cho phép xây dựng với kho hàng quá hạn"
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr "Kiểm soát sở hữu kho"
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr "Bật chức năng kiểm soát sở hữu kho với địa điểm và hàng trong kho"
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr "Biểu tượng địa điểm kho mặc định"
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr "Biểu tượng địa điểm kho hàng mặc định (trống nghĩa là không có biểu tượng)"
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr "Hiển thị hàng hóa đã lắp đặt"
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr "Hiển thị hàng trong kho đã được lắp đặt trên bảng kho"
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr "Mã tham chiếu đơn đặt bản dựng"
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr "Mẫu bắt buộc cho để trường tham chiếu đơn đặt bản dựng"
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr "Bật đơn hàng trả lại"
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr "Bật chức năng đơn hàng trả lại trong giao diện người dùng"
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr "Mẫu tham chiếu đơn hàng trả lại"
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr "Mẫu bắt buộc để tạo trường tham chiếu đơn hàng trả lại"
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr "Sửa đơn hàng trả lại đã hoàn thành"
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr "Cho phép sửa đơn hàng trả lại sau khi đã hoàn thành rồi"
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr "Mẫu tham chiếu đơn đặt hàng"
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr "Mẫu bắt buộc để tạo trường tham chiếu đơn đặt hàng"
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr "Vận chuyển mặc định đơn đặt hàng"
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr "Cho phép tạo vận chuyển mặc định với đơn đặt hàng"
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr "Sửa đơn đặt hàng đã hoàn thành"
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr "Cho phép sửa đơn đặt hàng sau khi đã vận chuyển hoặc hoàn thành"
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr "Mẫu tham chiếu đơn đặt mua"
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr "Mẫu bắt buộc cho để trường tham chiếu đơn đặt mua"
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr "Sửa đơn đặt mua đã hoàn thành"
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr "Cho phép sửa đơn đặt mua sau khi đã vận chuyển hoặc hoàn thành"
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr "Tự động hoàn thành đơn đặt mua"
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr "Bật quên mật khẩu"
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr "Bật chức năng quên mật khẩu trong trang đăng nhập"
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr "Bật đăng ký"
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr "Cho phép người dùng tự đăng ký tại trang đăng nhập"
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr "Bật SSO"
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr "Cho phép SSO tại trang đăng nhập"
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr "Bật đăng ký SSO"
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr "Cho phép người dùng tự đăng ký SSO tại trang đăng nhập"
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr "Yêu cầu email"
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr "Yêu cầu người dùng cung cấp email để đăng ký"
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr "Người dùng tự động điền SSO"
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Tự động điền thông tin chi tiết từ dữ liệu tài khoản SSO"
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr "Thư 2 lần"
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr "Khi đăng ký sẽ hỏi người dùng hai lần thư điện tử của họ"
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr "Mật khẩu 2 lần"
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr "Khi đăng ký sẽ hỏi người dùng hai lần mật khẩu của họ"
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr "Các tên miền được phép"
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr "Cấm đăng ký với 1 số tên miền cụ thể (dấu phẩy ngăn cách, bắt đầu với dấu @)"
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr "Nhóm khi đăng ký"
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr "Nhóm được gán cho người dùng mới khi đăng ký"
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr "Bắt buộc MFA"
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr "Người dùng phải sử dụng bảo mật đa nhân tố."
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr "Kiểm tra phần mở rộng khi khởi động"
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr "Kiểm tra toàn bộ phần mở rộng đã được cài đặt khi khởi dộng - bật trong môi trường ảo hóa"
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr "Kiểm tra cập nhật plugin"
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr "Bật tích hợp URL"
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr "Bật phần mở rộng để thêm định tuyến URL"
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr "Bật tích hợp điều hướng"
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr "Bật phần mở rộng để tích hợp thanh định hướng"
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr "Bật tích hợp ứng dụng"
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr "Bật phần mở rộng để thêm ứng dụng"
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr "Cho phép tích hợp lập lịch"
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr "Bật phẩn mở rộng để chạy các tác vụ theo lịch"
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr "Bật tích hợp nguồn cấp sự kiện"
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr "Bật phần mở rộng để trả lời sự kiện bên trong"
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr "Bật mã dự án"
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr "Bật mã dự án để theo dõi dự án"
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr "Chức năng kiểm kê"
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr "Bật chức năng kiểm kê theo mức độ ghi nhận kho và tính toán giá trị kho"
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr "Ngoại trừ vị trí bên ngoài"
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr "Loại trừ hàng trong kho thuộc địa điểm bên ngoài ra khỏi tính toán kiểm kê"
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr "Giai đoạn kiểm kê tự động"
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr "Số ngày giữa ghi chép kiểm kê tự động (đặt không để tắt)"
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr "Khoảng thời gian xóa báo cáo"
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr "Báo cáo kiểm kê sẽ bị xóa sau số ngày xác định"
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr "Hiển thị tên đầy đủ của người dùng"
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr "Hiển thị tên đầy đủ thay vì tên đăng nhập"
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr "Khóa thiết lập (phải duy nhất - phân biệt hoa thường"
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr "Ẩn sản phẩm ngừng hoạt động"
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr "Ẩn sản phẩm bị tắt trong kết quả trình bày tại trang chủ"
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr "Hiện sản phẩm đã đăng ký"
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr "Hiện sản phẩm đã đăng ký trên trang chủ"
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr "Hiện danh mục đã đăng ký"
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr "Hiện danh mục sản phẩm đã đăng ký trên trang chủ"
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr "Hiển thị nguyên liệu mới nhất"
-#: common/models.py:2042
+#: common/models.py:2062
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:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr "Hiển thị BOM chưa được xác thực"
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr "Hiện BOM chờ xác thực tại trang chủ"
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr "Hiện thay đổi kho hàng gần đây"
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr "Hiện hàng trong kho được thay đổi gần nhất trên trang chủ"
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr "Hiển thị hàng còn ít"
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr "Hiển thị hàng hóa còn ít tại trang chủ"
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr "Hiển thị hết hàng"
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr "Hiển thị hàng hóa đã bán hết tại trang chủ"
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr "Hiển thị hàng cần thiết"
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr "Hiện hàng trong kho cần thiết cho xây dựng tại trang chủ"
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr "Bán kho quá hạn"
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr "Hiển thị hàng hóa đã quá hạn trên trang chủ"
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr "Hiện kho hàng ế"
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr "Hiện hàng trong kho bị ế trên trang chủ"
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr "Hiện bản dựng chờ xử lý"
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr "Hiện bản dựng chờ xử lý trên trang chủ"
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr "Hiện bản dựng quá hạn"
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr "Hiện bản dựng quá hạn trên trang chủ"
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr "Hiện PO nổi bật"
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr "Hiện PO nổi bật trên trang chủ"
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr "Hiện PO quá hạn"
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr "Hiện đơn mua hàng quá hạn trên trang chủ"
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr "Hiện đơn hàng vận chuyển nổi bật"
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr "Hiện đơn hàng vận chuyển nổi bật tại trang chủ"
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr "Hiện đơn vận chuyển quá hạn"
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr "Hiện đơn vận chuyển quá hạn trên trang chủ"
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr "Hiện đơn vận chuyển chờ xử lý"
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr "Hiện đơn vận chuyển chờ xử lý trên trang chủ"
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr "Hiện tin tức"
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr "Hiện tin tức trên trang chủ"
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr "Hiển thị nhãn cùng dòng"
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr "Hiển thị nhãn PDF trong trình duyệt, thay vì tải về dạng tệp tin"
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr "Máy in tem nhãn mặc định"
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr "Cấu hình máy in tem nhãn nào được chọn mặc định"
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr "Hiển thị báo cáo cùng hàng"
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr "Hiện báo cáo PDF trong trình duyệt, thay vì tải về dạng tệp tin"
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr "Tìm sản phẩm"
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr "Hiện hàng hóa trong cửa sổ xem trước tìm kiếm"
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr "Tìm sản phẩm nhà cung cấp"
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr "Hiện sản phẩm nhà cung cấp trong cửa sổ xem trước tìm kiếm"
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr "Tìm sản phẩm nhà sản xuất"
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr "Hiện sản phẩm nhà sản xuất trong cửa sổ xem trước tìm kiếm"
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr "Ẩn sản phẩm ngừng hoạt động"
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr "Loại trừ sản phẩm ngưng hoạt động trong cửa sổ xem trước tìm kiếm"
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr "Tìm kiếm danh mục"
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr "Hiện danh mục sản phẩm trong cửa sổ xem trước tìm kiếm"
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr "Tìm kiếm kho"
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr "Hiện hàng hóa ở kho trong cửa sổ xem trước tìm kiếm"
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr "Ẩn hàng hóa trong kho không có sẵn"
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr "Không bao gồm hàng hóa trong kho mà không sẵn sàng từ màn hình xem trước tìm kiếm"
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr "Tìm kiếm vị trí"
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr "Hiện vị trí kho hàng trong cửa sổ xem trước tìm kiếm"
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr "Tìm kiếm công ty"
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr "Hiện công ty trong cửa sổ xem trước tìm kiếm"
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr "Tìm kiếm đặt hàng xây dựng"
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr "Hiện đơn đặt xây dựng trong cửa sổ xem trước tìm kiếm"
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr "Tìm kiếm đơn đặt mua"
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr "Hiện đơn đặt mua trong cửa sổ xem trước tìm kiếm"
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr "Loại trừ đơn đặt mua không hoạt động"
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr "Loại trừ đơn đặt mua không hoạt động ra khỏi cửa sổ xem trước tìm kiếm"
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr "Tìm đơn đặt hàng người mua"
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr "Hiện đơn đặt hàng người mua trong cửa sổ xem trước tìm kiếm"
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr "Loại trừ đơn đặt hàng người mua không hoạt động"
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr "Không bao gồm đơn đặt hàng người mua không hoạt động trong cửa sổ xem trước tìm kiếm"
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr "Tìm kiếm đơn hàng trả lại"
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr "Hiện đơn hàng trả lại trong cửa sổ xem trước tìm kiếm"
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr "Loại trừ đơn hàng trả lại không hoạt động"
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr "Không bao gồm đơn hàng trả lại không hoạt động trong cửa sổ xem trước tìm kiếm"
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr "Kết quả xem trước tìm kiếm"
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr "Số kết quả cần hiển thị trong từng phần của cửa sổ xem trước tìm kiếm"
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr "Tìm kiếm biểu thức"
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr "Bật tìm kiếm biểu thức chính quy trong câu truy vấn tìm kiếm"
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr "Tìm phù hợp toàn bộ chữ"
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr "Truy vấn tìm trả về kết quả phù hợp toàn bộ chữ"
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr "Hiện số lượng trong biểu mẫu"
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr "Hiển thị số lượng sản phẩm có sẵn trong một số biểu mẫu"
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr "Phím escape để đóng mẫu biểu"
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr "Sử dụng phím escape để đóng mẫu biểu hộp thoại"
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr "Cố định điều hướng"
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr "Vị trí thành điều hướng là cố định trên cùng màn hình"
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr "Định dạng ngày"
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr "Định dạng ưa chuộng khi hiển thị ngày"
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Lập lịch sản phẩm"
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr "Hiển thị thông tin lịch sản phẩm"
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr "Kiểm kê sản phẩm"
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr "Hiển thị thông tin kiểm kê sản phẩm (nếu chức năng kiểm kê được bật)"
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr "Độ dài chuỗi trong bảng"
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr "Giới hạn độ dài tối đa cho chuỗi hiển thị trong kiểu xem bảng biểu"
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr "Mẫu nhãn sản phẩm mặc định"
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr "Mẫu nhãn sản phẩm mặc định được chọn tự động"
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr "Mẫu hàng hóa trong khi mặc định"
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr "Mẫu nhãn hàng hóa trong kho tự động được chọn"
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr "Mẫu nhãn vị trí kho mặc định"
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr "Mẫu nhãn vị trí kho được chọn tự động"
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr "Nhận báo cáo lỗi"
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr "Nhận thông báo khi có lỗi hệ thống"
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr "Số lượng giá phá vỡ"
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr "Số lượng giá phá vỡ"
msgid "Price"
msgstr "Giá"
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr "Đơn vị giá theo số lượng cụ thể"
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr "Đầu mối"
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr "Đầu mối tại điểm webhook được nhận"
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr "Tên của webhook này"
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr "Tên của webhook này"
msgid "Active"
msgstr "Hoạt động"
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr "Webhook có hoạt động không"
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr "Chữ ký số"
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr "Chữ ký số để truy cập"
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr "Bí mật"
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr "Mã bí mật dùng chung cho HMAC"
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr "Mã Tin nhắn"
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr "Định danh duy nhất cho tin nhắn này"
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr "Máy chủ"
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr "Mãy chủ từ tin nhắn này đã được nhận"
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr "Đầu mục"
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr "Đầu mục tin nhắn"
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr "Thân"
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr "Thân tin nhắn này"
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr "Đầu mối của tin nhắn này đã nhận được"
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr "Làm việc vào"
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr "Công việc trong tin nhắn này đã kết thúc?"
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr "Mã"
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr "Tiêu đề"
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr "Đã công bố"
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Tác giả"
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Tóm tắt"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr "Đọc"
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr "Tin này đã được đọc?"
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr "Tin này đã được đọc?"
msgid "Image"
msgstr "Hình ảnh"
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr "Tệp ảnh"
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr "Tên đơn vị phải là một định danh hợp lệ"
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr "Tên đơn vị"
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr "Biểu tượng"
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr "Biểu tượng đơn vị tùy chọn"
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr "Định nghĩa"
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr "Định nghĩa đơn vị"
@@ -3849,7 +3863,7 @@ msgstr "Tiền tệ mặc định dùng cho công ty này"
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr "Doanh nghiêp"
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr "Liên kết thông tin địa chỉ (bên ngoài)"
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Sản phẩm cơ bản"
@@ -3953,7 +3967,7 @@ msgstr "Chọn sản phẩm"
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr "Chọn nhà sản xuất"
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr "Tên tham số"
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr "Giá trị"
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr "Giá trị tham số"
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr "Sản phẩm nhà sản xuất đã liên kết phải tham chiếu vớ
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr "Nhà cung cấp"
msgid "Select supplier"
msgstr "Chọn nhà cung cấp"
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr "Đơn vị quản lý kho nhà cung cấp"
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr "Mô tả sản phẩm nhà cung cấp"
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr "Ghi chú"
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr "Thu phí tối thiểu (vd: phí kho bãi)"
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr "Đóng gói"
@@ -4199,13 +4213,13 @@ msgstr "Xóa ảnh"
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr "Khách hàng"
@@ -4463,7 +4477,7 @@ msgstr "Địa chỉ"
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr "Sản phẩm nhà cung cấp"
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr "Chưa có thông tin nhà cung cấp"
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr "Cập nhật độ sẵn sàng sản phẩm"
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr "Hàng trong kho"
@@ -4676,48 +4690,48 @@ msgstr "Mã QR"
msgid "QR code"
msgstr "Mã QR"
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr "Không rõ"
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr "Không tìm thấy đơn đặt mua phù hợp"
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr "Đơn hàng"
@@ -4809,7 +4823,7 @@ msgstr "Đơn hàng"
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr "Đơn hàng trả lại"
@@ -5008,9 +5022,9 @@ msgstr "Đã nhận"
msgid "Number of items received"
msgstr "Số mục đã nhận"
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr "Giá mua"
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr "Người dùng đã kiểm tra vận chuyển này"
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr "Vận chuyển"
@@ -5726,12 +5740,12 @@ msgstr "Cập nhật {part} giá đơn vị đến {price}"
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr "Cập nhật {part} giá đơn vị đến {price} và số lượng đến {qty}"
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr "ID sản phẩm"
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr "Tên sản phẩm"
@@ -5743,7 +5757,7 @@ msgstr "Mô tả sản phẩm"
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr "IPN"
@@ -5811,11 +5825,11 @@ msgstr "Chi phí tối thiểu"
msgid "Maximum Cost"
msgstr "Chi phí tối đa"
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr "ID cha"
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr "Tên cha"
@@ -5824,7 +5838,7 @@ msgstr "Tên cha"
msgid "Category Path"
msgstr "Đưỡng dẫn danh mục"
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr "Đưỡng dẫn danh mục"
msgid "Parts"
msgstr "Nguyên liệu"
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr "Cấp độ BOM"
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr "ID hàng hóa BOM"
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr "IPN cha"
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr "IPN sản phẩm"
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr "Giá thấp nhất"
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr "Giá cao nhất"
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr "Đơn đặt mua vào"
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr "Đơn hàng bán ra"
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr "Kho sản xuất bởi Đơn đặt bản dựng"
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr "Kho được yêu cầu cho đơn đặt bản dựng"
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr "Hợp lệ"
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr "Xác minh toàn bộ hóa đơn vật liệu"
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr "Tùy chọn này phải được chọn"
@@ -5904,7 +5922,7 @@ msgstr "Tổng số lượng"
msgid "Input quantity for price calculation"
msgstr "Số lượng đầu ra cho tính toán giá bán"
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Danh mục sản phẩm"
@@ -5919,7 +5937,7 @@ msgstr "Danh mục sản phẩm"
msgid "Default location for parts in this category"
msgstr "Vị trí mặc định cho sản phẩm trong danh mục này"
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr "Sản phẩm với Tên, IPN và Duyệt lại đã tồn tại."
msgid "Parts cannot be assigned to structural part categories!"
msgstr "Sản phẩm không thể được phân vào danh mục sản phẩm có cấu trúc!"
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr "Tên sản phẩm"
@@ -6009,9 +6027,9 @@ msgstr "Mô tả (không bắt buộc)"
msgid "Part keywords to improve visibility in search results"
msgstr "Từ khóa sản phẩm để cải thiện sự hiện diện trong kết quả tìm kiếm"
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr "Tống số kho tại thời điểm kiểm kê"
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr "Ngày"
@@ -6328,556 +6346,572 @@ msgstr "Số sản phẩm đã được bao quát bởi kiểm kê"
msgid "User who requested this stocktake report"
msgstr "Người dùng đã yêu cầu báo cáo kiểm kê này"
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr "Chỉ có thể tạo mẫu kiểm thử cho sản phẩm có thể theo dõi"
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr "Kiểm thử với tên này đã tồn tại cho sản phẩm này"
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr "Tên kiểm thử"
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr "Nhập tên cho kiểm thử"
-#: part/models.py:3464
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
+msgstr ""
+
+#: part/models.py:3465
msgid "Test Description"
msgstr "Mô tả kiểm thử"
-#: part/models.py:3465
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr "Nhập mô tả cho kiểm thử này"
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr "Bắt buộc"
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr "Kiểm thử này bắt buộc phải đạt?"
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr "Giá trị bắt buộc"
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr "Kiểm thử này yêu cầu 1 giá trị khi thêm một kết quả kiểm thử?"
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr "Yêu cầu đính kèm"
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr "Kiểm thử này yêu cầu tệp đính kèm khi thêm một kết quả kiểm thử?"
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr "Tham số hộp kiểm tra không thể có đơn vị"
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr "Tham số hộp kiểm tra không thể có lựa chọn"
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr "Lựa chọn phải duy nhất"
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr "Tên tham số mẫu phải là duy nhất"
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr "Tên tham số"
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr "Đơn vị vật lý cho tham số này"
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr "Mô tả tham số"
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr "Ô lựa chọn"
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr "Tham số này có phải là hộp kiểm tra?"
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr "Lựa chọn"
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr "Lựa chọn hợp lệ từ tham số này (ngăn cách bằng dấu phẩy)"
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr "Lựa chọn sai cho giá trị tham số"
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr "Sản phẩm cha"
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr "Mẫu tham số"
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr "Dữ liệu"
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr "Giá trị tham số"
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr "Giá trị mặc định"
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr "Giá trị tham số mặc định"
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr "Tên hoặc mã sản phẩm"
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr "Giá trị mã sản phẩm duy nhất"
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr "Giá trị IPN sản phẩm"
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr "Cấp độ"
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr "Cấp độ BOM"
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr "Chọn sản phẩm cha"
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr "Sản phẩm phụ"
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr "Chọn sản phẩm được dùng trong BOM"
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr "Số lượng BOM cho mục BOM này"
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr "Mục BOM này là tùy chọn"
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr "Mục BOM này bị tiêu hao (không được theo dõi trong đơn đặt bản dựng)"
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Dư thừa"
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "Số lượng bản dựng lãng phí ước tính (tuyệt đối hoặc phần trăm)"
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr "Tham chiếu mục BOM"
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr "Ghi chú mục BOM"
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr "Giá trị tổng kiểm"
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr "Giá trị tổng kiểm dòng BOM"
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr "Đã xác minh"
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr "Mục BOM này là hợp lệ"
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr "Nhận thừa hưởng"
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr "Mục BOM này được thừa kế bởi BOM cho sản phẩm biến thể"
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr "Cho phép biến thể"
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr "Hàng trong kho cho sản phẩm biến thể có thể được dùng bởi mục BOM này"
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr "Số lượng phải là giá trị nguyên dùng cho sản phẩm có thể theo dõi được"
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr "Sản phẩm phụ phải được chỉ định"
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr "Sảm phẩm thay thế mục BOM"
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr "Sản phẩm thay thế không thể giống sản phẩm chủ đạo"
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr "Hàng hóa BOM cha"
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr "Sản phẩm thay thế"
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr "Sản phẩm 1"
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr "Sản phẩm 2"
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr "Chọn sản phẩm liên quan"
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr "Không thể tạo mối quan hệ giữa một sản phẩm và chính nó"
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr "Đã tồn tại mối quan hệ trùng lặp"
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr "Loại tiền mua hàng của hàng hóa này"
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr "Chưa chọn sản phẩm"
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr "Chọn danh mục"
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr "Sản phẩm gốc"
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr "Chọn sản phẩm gốc để nhân bản"
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr "Sao chép ảnh"
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr "Sao chép hình ảnh từ sản phẩm gốc"
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr "Sao chép BOM"
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr "Sao chép định mức nguyên vật liệu từ sản phẩm gốc"
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr "Sao chép thông số"
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr "Sao chép thông tin tham số từ sản phẩm gốc"
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr "Sao chép ghi chú"
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr "Sao chép ghi chú từ sản phẩm gốc"
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr "Số liệu tồn kho ban đầu"
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr "Chỉ ra số lượng tồn kho ban đầu cho sản phẩm. Nếu điền là không, không thêm kho nào."
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr "Vị trí kho ban đầu"
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr "Chỉ định vị trí kho ban đầu cho sản phẩm này"
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr "Chọn nhà cung cấp (hoặc để trống để bỏ qua)"
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr "Chọn nhà sản xuất (hoặc để trống để bỏ qua)"
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr "Mã số nhà sản xuất"
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr "Công ty đã chọn không phải là nhà cung ứng hợp lệ"
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr "Công ty đã chọn không phải là nhà sản xuất hợp lệ"
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr "Mã số nhà sản xuất khớp với MPN này đã tồn tại"
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr "Mã số nhà cung cấp khớp với SKU này đã tồn tại"
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr "Nhân bản sản phẩm"
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr "Sao chép dữ liệu ban đầu từ sản phẩm khác"
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr "Số liệu kho ban đầu"
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr "Tạo sản phẩm với số lượng tồn kho ban đầu"
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr "Thông tin nhà cung cấp"
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr "Thêm thông tin nhà cung cấp ban đầu cho sản phẩm này"
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr "Sao chép thông số nhóm hàng"
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr "Sao chép mẫu tham số từ nhóm sản phẩm được chọn"
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr "Ảnh hiện có"
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr "Tên tệp của ảnh sản phẩm hiện hữu"
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr "Tệp hình ảnh không tồn tại"
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr "Hạn chế báo cáo kiểm kê với sản phẩm riêng biệt và sản phẩm biến thể bất kỳ"
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr "Hạn chế báo cáo kiểm kê với danh mục sản phẩm riêng biệt và danh mục con bất kỳ"
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr "Hạn chế báo cáo kiểm kê với vị trí kho riêng biệt và vị trí con bất kỳ"
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr "Ngoại trừ kho bên ngoài"
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr "Loại trừ hàng trong kho của vị trí bên ngoài"
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr "Tạo báo cáo"
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr "Tạo tệp báo cáo chứa dữ liệu kiểm kê đã tính toán"
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr "Cập nhật sản phẩm"
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr "Cập nhật sản phẩm cụ thể với dữ liệu kiểm kê đã tính"
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr "Chức năng kiểm kê chưa được bật"
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr "Giá trị tính toán ghi đè cho giá tối thiểu"
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr "Tiền tế giá tối thiểu"
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr "Giá trị tính toán ghi đè cho giá tối đa"
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr "Tiền tế giá tối đa"
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr "Cập nhật"
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr "Cập nhật giá cho sản phẩm này"
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr "Không thể chuyển đổi từ tiền tệ đã cung cấp cho {default_currency}"
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr "Giá tối thiểu không được lớn hơn giá tối đa"
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr "Giá tối đa không được nhỏ hơn giá tối thiểu"
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr "Chọn sản phẩm để sao chép định mức nguyên vật liệu"
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr "Xóa dữ liệu đã tồn tại"
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr "Xóa mục BOM đã tồn tại trước khi sao chép"
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr "Bao gồm thừa hưởng"
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr "Bao gồm mục BOM được thừa hưởng từ sản phẩm mẫu"
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr "Bỏ qua dòng không hợp lệ"
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr "Bật tùy chọn này để bỏ qua dòng không hợp lệ"
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr "Sao chép sản phẩm thay thế"
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr "Sao chép sản phẩm thay thế khi nhân bản hàng hóa BOM"
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr "Dọn dẹp BOM đang tồn tại"
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr "Xóa mục BOM đang tồn tại trước khi tải lên"
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr "Chưa chỉ ra cột sản phẩm"
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr "Tìm thấy nhiều sản phẩm phù hợp"
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr "Không tìm thấy sản phẩm nào"
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr "Sản phẩm không được chỉ định như là một thành phần"
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr "Chưa cung cấp số lượng"
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr "Số lượng không hợp lệ"
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr "Buộc phải nhập ít nhất một mục BOM"
@@ -7040,7 +7074,7 @@ msgstr "Thêm thông tin kiểm kê"
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr "Kiểm kê"
@@ -7274,7 +7308,7 @@ msgstr "Sản phẩm bị tắt"
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr "Không hoạt động"
@@ -7402,7 +7436,7 @@ msgstr "Biến thể"
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr "Kiện hàng"
@@ -7448,7 +7482,7 @@ msgstr "Sửa"
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr "Cập nhật lần cuối"
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr "Phương thức"
msgid "No author found"
msgstr "Không tìm thấy tác giả"
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr "Phần bổ sung '{p}' không tương thích với phiên bản InvenTree hiện tại {v}"
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr "Phần bổ sung yêu cầu ít nhất phiên bản {v}"
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr "Phần bổ sung yêu cầu tối đa phiên bản {v}"
@@ -8361,7 +8395,7 @@ msgstr "Tổng cộng"
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr "Kết quả kiểm tra"
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr "Thử nghiệm"
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr "Kết quả"
@@ -8416,7 +8450,7 @@ msgstr "Mục đã cài đặt"
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr "Sê-ri"
@@ -8500,48 +8534,48 @@ msgstr "Xóa khi thiếu hụt"
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr "Ngày hết hạn"
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr "Địa điểm bên ngoài"
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr "Cây sản phẩm"
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr "Ngày hết hạn trước đó"
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr "Ngày hết hạn sau đó"
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr "Ế"
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr "Bắt buộc nhập số lượng"
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr "Phải cung cấp sản phẩm hợp lệ"
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr "Sản phẩm nhà cung cấp đã đưa không tồn tại"
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr "Sản phẩm nhà cung cấp có kích thước đóng gói được định nghĩa nhưng cờ use_pack_size chưa được thiết lập"
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr "Số sê-ri không thê được cung cấp cho sản phẩm không thể theo dõi"
@@ -8582,7 +8616,7 @@ msgstr "Chọn chủ sở hữu"
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr "Không thể đưa trực tiếp hàng trong kho vào bên trong vị trí kho hàng có cấu trúc, nhưng có thể đặt vào kho con."
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr "Bên ngoài"
@@ -8591,7 +8625,7 @@ msgstr "Bên ngoài"
msgid "This is an external stock location"
msgstr "Đây là vị trí kho bên ngoài"
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr "Loại vị trí"
@@ -8608,7 +8642,7 @@ msgstr "Bạn không thể chuyển đổi vị trí kho hàng này thành cấu
msgid "Stock items cannot be located into structural stock locations!"
msgstr "Không thể đặt hàng trong kho vào trong địa điểm kho có cấu trúc!"
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr "Không thể tạo hàng hóa trong kho cho sản phẩm ảo"
@@ -8653,7 +8687,7 @@ msgstr "Chọn sản phẩm nhà cung cấp khớp với hàng hóa trong kho n
msgid "Where is this stock item located?"
msgstr "Hàng trong kho này được đặt ở đâu?"
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr "Đóng gói hàng hóa này được lưu trữ lại"
@@ -8665,7 +8699,7 @@ msgstr "Mục này đã được cài đặt trong mục khác?"
msgid "Serial number for this item"
msgstr "Số sê ri cho mục này"
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr "Mã lô cho hàng trong kho này"
@@ -8742,249 +8776,257 @@ msgstr "Số sêri phải là một danh sách dãy số nguyên"
msgid "Quantity does not match serial numbers"
msgstr "Số lượng không khớp với số sêri"
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr "Số sêri đã tồn tại"
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr "Hàng trong kho đã được gán vào đơn hàng bán"
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr "Hàng trong kho đã được cài đặt vào hàng hóa khác"
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr "Hàng trong kho chứa hàng hóa khác"
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr "Hàng trong kho đã được gắn với một khách hàng"
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr "Hàng trong kho hiện đang sản xuất"
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr "Không thể hợp nhất kho nối tiếp"
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr "Mặt hàng trùng lặp"
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr "Mặt hàng phải tham chiếu đến sản phẩm tương tự"
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr "Mặt hàng phải tham chiếu đến sản phẩm nhà cung cấp tương tự"
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr "Mã trạng thái kho phải phù hợp"
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Không thể xóa mặt hàng không ở trong kho"
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr "Ghi chú đầu vào"
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr "Phải cung cấp giá trị cho kiểm thử này"
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr "Phải tải liên đính kèm cho kiểm thử này"
-#: stock/models.py:2344
-msgid "Test name"
-msgstr "Tên kiểm thử"
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr "Kết quả kiểm thử"
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr "Giá trị đầu ra kiểm thử"
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr "Đính kèm kết quả kiểm thử"
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr "Ghi chú kiểm thử"
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr "Số sêri quá lớn"
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr "Sử dụng kích thước đóng gói khi thêm: Số lượng được định nghĩa là số của gói"
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr "Giá mua của mặt hàng, theo đơn vị hoặc gói"
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr "Nhập số của mặt hàng cần tạo số nối tiếp"
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr "Số lượng phải không vượt quá số lượng trong kho đang có ({q})"
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr "Điền số sêri cho hàng hóa mới"
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr "Vị trí kho đích"
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr "Trường ghi chú tùy chọn"
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr "Không thể gán số sêri cho sản phẩm này"
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr "Chọn mặt hàng để lắp đặt"
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr "Số lượng để cài đặt"
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr "Nhập số lượng hàng hóa để cài đặt"
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr "Thêm ghi chú giao dịch (tùy chọn)"
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr "Số lượng cần cài đặt phải ít nhất là 1"
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr "Mặt hàng không khả dụng"
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr "Sản phẩm đã chọn không có trong hóa đơn vật liệu"
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr "Số lượng cần lắp đặt phải không vượt quá số lượng đang có"
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr "Vị trí đích cho hàng hóa bị gỡ bỏ"
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr "Chọn sản phẩm để chuyển đổi mặt hàng vào bên trong"
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr "Sản phẩm đã chọn không phải là tùy chọn hợp lệ để chuyển đổi"
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr "Không thể chuyển đổi hàng hóa với sản phẩm nhà cung cấp đã gán"
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr "Vị trí đích dành cho hàng hóa trả lại"
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr "Chọn mặt hàng để đổi trạng thái"
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr "Không có mặt hàng nào được chọn"
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr "Sản phẩm phải có thể bán được"
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr "Hàng hóa được phân bổ đến một đơn hàng bán"
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr "Hàng hóa được phân bổ đến một đơn đặt bản dựng"
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr "Khách hàng được gán vào các mặt hàng"
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr "Công ty đã chọn không phải là khách hàng"
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr "Ghi chú phân bổ kho"
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr "Phải cung cấp danh sách mặt hàng"
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr "Ghi chú gộp kho"
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr "Cho phép nhiều nhà cung không khớp"
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr "Cho phép mặt hàng cùng sản phẩm nhà cung cấp khác phải được gộp"
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr "Cho phép trạng thái không khớp"
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr "Cho phép mặt hàng với mã trạng thái khác nhau để gộp lại"
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr "Cần cung cấp ít nhất hai mặt hàng"
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr "Giá trị khóa chính mặt hàng"
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr "Mã trạng thái mặt hàng"
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr "Ghi chú giao dịch kho"
@@ -9009,7 +9051,7 @@ msgstr "Thông tin kiểm thử"
msgid "Test Report"
msgstr "Báo cáo kiểm thử"
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr "Xóa dữ liệu báo cáo kiểm thử"
@@ -9025,15 +9067,15 @@ msgstr "Ghi chú tại kho hàng"
msgid "Installed Stock Items"
msgstr "Hàng hóa đã lắp đặt"
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr "Lắp đặt hàng hóa trong kho"
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr "Xóa toàn bộ kết quả kiểm thử cho kho hàng này"
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr "Chức năng điều chỉnh kho"
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr "Đếm hàng"
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr "Thêm hàng"
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr "Xóa hàng hóa"
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr "Sắp xếp hàng hóa"
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr "Chuyển giao hàng"
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr "Chỉ định cho khách hàng"
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr "Chưa thực hiện kiểm kê"
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr "Vị trí mới"
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr "Trang chủ"
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr "Xác nhận địa chỉ email"
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr "Xin hãy xác nhận rằng %(email)s là địa chỉ email cho người dùng %(user_display)s."
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "Xác nhận"
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr "Nhấp chuột vào liên kết dưới đây để xem sản phẩm này"
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr "Số lượng tối thiểu"
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr "Lỗi biểu mẫu tồn tại"
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr "Nhập truy vấn tìm kiếm"
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po
index 0d5a82b56624..c65dbaea2e91 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: 2024-02-14 14:18+0000\n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"POT-Creation-Date: 2024-02-19 06:31+0000\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Chinese Traditional\n"
"Language: zh_TW\n"
@@ -51,18 +51,18 @@ msgstr "詳細的錯誤訊息可以在管理介面中瀏覽"
msgid "Enter date"
msgstr "輸入日期"
-#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437
-#: build/serializers.py:515 build/templates/build/sidebar.html:21
+#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
+#: build/serializers.py:516 build/templates/build/sidebar.html:21
#: company/models.py:830 company/templates/company/sidebar.html:37
#: order/models.py:1266 order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
#: part/models.py:3160 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367
-#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676
-#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111
-#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2328 stock/models.py:2444
+#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728
+#: stock/serializers.py:778 stock/serializers.py:1074 stock/serializers.py:1163
+#: stock/serializers.py:1328 stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259
#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
#: templates/js/translated/part.js:1080
@@ -70,7 +70,7 @@ msgstr "輸入日期"
#: templates/js/translated/return_order.js:776
#: templates/js/translated/sales_order.js:1067
#: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398
+#: templates/js/translated/stock.js:1525 templates/js/translated/stock.js:2389
msgid "Notes"
msgstr "備註"
@@ -127,42 +127,42 @@ msgstr "所提供的Email網域尚未被核准。"
msgid "Registration is disabled."
msgstr "註冊功能已停用。"
-#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728
+#: InvenTree/helpers.py:512 order/models.py:526 order/models.py:728
msgid "Invalid quantity provided"
msgstr "提供的數量無效"
-#: InvenTree/helpers.py:513
+#: InvenTree/helpers.py:520
msgid "Empty serial number string"
msgstr "序號為空白"
-#: InvenTree/helpers.py:542
+#: InvenTree/helpers.py:549
msgid "Duplicate serial"
msgstr "重複的序號"
-#: InvenTree/helpers.py:574 InvenTree/helpers.py:617
+#: InvenTree/helpers.py:581 InvenTree/helpers.py:624
#, python-brace-format
msgid "Invalid group range: {group}"
msgstr ""
-#: InvenTree/helpers.py:605
+#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661
+#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668
#, python-brace-format
msgid "Invalid group sequence: {group}"
msgstr ""
-#: InvenTree/helpers.py:671
+#: InvenTree/helpers.py:678
msgid "No serial numbers found"
msgstr "找不到序號"
-#: InvenTree/helpers.py:676
+#: InvenTree/helpers.py:683
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:794
+#: InvenTree/helpers.py:801
msgid "Remove HTML tags from this value"
msgstr "從這個值中移除HTML標籤"
@@ -386,7 +386,7 @@ msgstr "缺少檔案"
msgid "Missing external link"
msgstr "缺少外部連結"
-#: InvenTree/models.py:559 stock/models.py:2362
+#: InvenTree/models.py:559 stock/models.py:2439
#: templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:326
msgid "Attachment"
@@ -396,7 +396,7 @@ msgstr "附件"
msgid "Select file to attach"
msgstr "選擇附件"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2932 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -427,13 +427,13 @@ msgstr "註解"
msgid "File comment"
msgstr "檔案註解"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2408
+#: common/models.py:2409 common/models.py:2633 common/models.py:2634
+#: common/models.py:2879 common/models.py:2880 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3007 users/models.py:100
+#: templates/js/translated/stock.js:2998 users/models.py:100
msgid "User"
msgstr "使用者"
@@ -474,9 +474,9 @@ msgstr "同一個上層元件下不能有重複的名字"
msgid "Invalid choice"
msgstr "無效的選項"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2620 common/models.py:3018
#: common/serializers.py:370 company/models.py:605 label/models.py:115
-#: machine/models.py:24 part/models.py:850 part/models.py:3587
+#: machine/models.py:24 part/models.py:850 part/models.py:3588
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
@@ -490,7 +490,7 @@ msgstr "無效的選項"
#: templates/js/translated/company.js:1155
#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2678
msgid "Name"
msgstr "名稱"
@@ -500,8 +500,8 @@ msgstr "名稱"
#: company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:107 label/models.py:122
-#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413
-#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82
+#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:414
+#: part/models.py:873 part/models.py:3603 part/templates/part/category.html:82
#: part/templates/part/part_base.html:170
#: part/templates/part/part_scheduling.html:12 report/models.py:187
#: report/models.py:622 report/models.py:667
@@ -518,7 +518,7 @@ msgstr "名稱"
#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621
#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355
-#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873
+#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2885
#: templates/js/translated/plugin.js:80
#: templates/js/translated/purchase_order.js:1703
#: templates/js/translated/purchase_order.js:1846
@@ -526,8 +526,8 @@ msgstr "名稱"
#: templates/js/translated/return_order.js:314
#: templates/js/translated/sales_order.js:802
#: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028
-#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802
+#: templates/js/translated/stock.js:1504 templates/js/translated/stock.js:2019
+#: templates/js/translated/stock.js:2710 templates/js/translated/stock.js:2793
msgid "Description"
msgstr "描述"
@@ -540,7 +540,7 @@ msgid "parent"
msgstr "上層元素"
#: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2728
+#: templates/js/translated/stock.js:2719
msgid "Path"
msgstr "路徑"
@@ -576,104 +576,104 @@ msgstr "伺服器錯誤"
msgid "An error has been logged by the server."
msgstr "伺服器紀錄了一個錯誤。"
-#: InvenTree/serializers.py:63 part/models.py:4115
+#: InvenTree/serializers.py:62 part/models.py:4116
msgid "Must be a valid number"
msgstr "必須是有效的數字"
-#: InvenTree/serializers.py:100 company/models.py:177
+#: InvenTree/serializers.py:99 company/models.py:177
#: company/templates/company/company_base.html:106 part/models.py:2978
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
msgstr "貨幣"
-#: InvenTree/serializers.py:103
+#: InvenTree/serializers.py:102
msgid "Select currency from available options"
msgstr "從可用選項中選擇貨幣"
-#: InvenTree/serializers.py:437
+#: InvenTree/serializers.py:436
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:449
+#: InvenTree/serializers.py:448
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:466
+#: InvenTree/serializers.py:467
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:468
+#: InvenTree/serializers.py:469
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:476
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:536
+#: InvenTree/serializers.py:537
msgid "Filename"
msgstr "檔案名稱"
-#: InvenTree/serializers.py:570
+#: InvenTree/serializers.py:571
msgid "Invalid value"
msgstr "無效的值"
-#: InvenTree/serializers.py:590
+#: InvenTree/serializers.py:591
msgid "Data File"
msgstr "資料檔"
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:592
msgid "Select data file for upload"
msgstr "選擇要上傳的資料檔案"
-#: InvenTree/serializers.py:608
+#: InvenTree/serializers.py:609
msgid "Unsupported file type"
msgstr "不支援的檔案類型"
-#: InvenTree/serializers.py:614
+#: InvenTree/serializers.py:615
msgid "File is too large"
msgstr "檔案大小過大"
-#: InvenTree/serializers.py:635
+#: InvenTree/serializers.py:636
msgid "No columns found in file"
msgstr "檔案中找不到欄位"
-#: InvenTree/serializers.py:638
+#: InvenTree/serializers.py:639
msgid "No data rows found in file"
msgstr "檔案中找不到資料列"
-#: InvenTree/serializers.py:751
+#: InvenTree/serializers.py:752
msgid "No data rows provided"
msgstr "沒有提供資料列"
-#: InvenTree/serializers.py:754
+#: InvenTree/serializers.py:755
msgid "No data columns supplied"
msgstr "沒有提供資料欄位"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:822
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "找不到必須的欄位: 「{name}」"
-#: InvenTree/serializers.py:830
+#: InvenTree/serializers.py:831
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "重複的欄位:「{col}」"
-#: InvenTree/serializers.py:853
+#: InvenTree/serializers.py:854
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:855
msgid "URL of remote image file"
msgstr "遠端圖片的URL"
-#: InvenTree/serializers.py:870
+#: InvenTree/serializers.py:873
msgid "Downloading images from remote URL is not enabled"
msgstr "尚未啟用從遠端URL下載圖片"
-#: InvenTree/status.py:66 part/serializers.py:1090
+#: InvenTree/status.py:66 part/serializers.py:1101
msgid "Background worker check failed"
msgstr "背景工作程式檢查失敗"
@@ -813,7 +813,7 @@ msgstr "從上層元素分拆"
msgid "Split child item"
msgstr "分拆下層元素"
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1817
msgid "Merged stock items"
msgstr "已合併的庫存項目"
@@ -833,7 +833,7 @@ msgstr "工單產出已完成"
msgid "Build order output rejected"
msgstr "工單產出已拒絕"
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1723
msgid "Consumed by build order"
msgstr "被工單消耗的"
@@ -933,14 +933,14 @@ msgstr "關於InvenTree"
msgid "Build must be cancelled before it can be deleted"
msgstr "工單必須被取消才能被刪除"
-#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:3994 templates/js/translated/bom.js:997
#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519
#: templates/js/translated/table_filters.js:190
#: templates/js/translated/table_filters.js:579
msgid "Consumable"
msgstr "耗材"
-#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:3988 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
#: templates/js/translated/build.js:2528
#: templates/js/translated/table_filters.js:186
@@ -967,7 +967,7 @@ msgstr "已分配"
#: templates/email/low_stock_notification.html:17
#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:226
+#: templates/js/translated/model_renderers.js:228
#: templates/js/translated/part.js:692 templates/js/translated/part.js:694
#: templates/js/translated/part.js:699
#: templates/js/translated/table_filters.js:340
@@ -980,7 +980,7 @@ msgstr "可用數量"
#: report/templates/report/inventree_build_order_base.html:105
#: templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2854
msgid "Build Order"
msgstr "生產工單"
@@ -1008,8 +1008,8 @@ msgid "Build Order Reference"
msgstr "生產工單代號"
#: build/models.py:171 order/models.py:427 order/models.py:881
-#: order/models.py:1259 order/models.py:1963 part/admin.py:416
-#: part/models.py:4008 part/templates/part/upload_bom.html:54
+#: order/models.py:1259 order/models.py:1963 part/admin.py:417
+#: part/models.py:4009 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
@@ -1041,9 +1041,9 @@ msgstr "這張生產工單對應的上層生產工單"
#: order/models.py:1384 order/models.py:1516 order/models.py:1517
#: part/models.py:387 part/models.py:2989 part/models.py:3133
#: part/models.py:3277 part/models.py:3300 part/models.py:3321
-#: part/models.py:3343 part/models.py:3450 part/models.py:3735
-#: part/models.py:3866 part/models.py:3959 part/models.py:4320
-#: part/serializers.py:1036 part/serializers.py:1601
+#: part/models.py:3343 part/models.py:3444 part/models.py:3736
+#: part/models.py:3867 part/models.py:3960 part/models.py:4321
+#: part/serializers.py:1047 part/serializers.py:1612
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/upload_bom.html:52
@@ -1054,7 +1054,7 @@ msgstr "這張生產工單對應的上層生產工單"
#: report/templates/report/inventree_return_order_report_base.html:24
#: report/templates/report/inventree_slr_report.html:102
#: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:200 stock/serializers.py:610
+#: stock/serializers.py:252 stock/serializers.py:662
#: templates/InvenTree/search.html:82
#: templates/email/build_order_completed.html:17
#: templates/email/build_order_required_stock.html:17
@@ -1081,9 +1081,9 @@ msgstr "這張生產工單對應的上層生產工單"
#: templates/js/translated/sales_order.js:1598
#: templates/js/translated/sales_order.js:1796
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
-#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1958
+#: templates/js/translated/stock.js:2819 templates/js/translated/stock.js:3052
+#: templates/js/translated/stock.js:3198
msgid "Part"
msgstr "零件"
@@ -1099,7 +1099,7 @@ msgstr "銷售訂單代號"
msgid "SalesOrder to which this build is allocated"
msgstr "這張生產工單對應的銷售訂單"
-#: build/models.py:218 build/serializers.py:946
+#: build/models.py:218 build/serializers.py:958
#: templates/js/translated/build.js:1726
#: templates/js/translated/sales_order.js:1185
msgid "Source Location"
@@ -1141,13 +1141,13 @@ msgstr "生產狀態"
msgid "Build status code"
msgstr "生產狀態代碼"
-#: build/models.py:261 build/serializers.py:279 order/serializers.py:527
-#: stock/models.py:821 stock/serializers.py:1241
+#: build/models.py:261 build/serializers.py:280 order/serializers.py:527
+#: stock/models.py:821 stock/serializers.py:1293
#: templates/js/translated/purchase_order.js:1125
msgid "Batch Code"
msgstr "批量代碼"
-#: build/models.py:265 build/serializers.py:280
+#: build/models.py:265 build/serializers.py:281
msgid "Batch code for this build output"
msgstr "本批次成品的生產批號"
@@ -1258,27 +1258,32 @@ msgstr "生產成品已經完成"
msgid "Build output does not match Build Order"
msgstr "生產品項與生產工單不符"
-#: build/models.py:859 build/serializers.py:222 build/serializers.py:261
-#: build/serializers.py:819 order/models.py:523 order/serializers.py:395
-#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759
-#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398
+#: build/models.py:859 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:523 order/serializers.py:395
+#: order/serializers.py:522 part/serializers.py:1404 part/serializers.py:1770
+#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:450
msgid "Quantity must be greater than zero"
msgstr "數量必須大於零"
-#: build/models.py:864 build/serializers.py:227
+#: build/models.py:864 build/serializers.py:228
msgid "Quantity cannot be greater than the output quantity"
msgstr "數量不能大於工單生產數量"
-#: build/models.py:1278
+#: build/models.py:921 build/serializers.py:533
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1283
msgid "Build object"
msgstr ""
-#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
-#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/models.py:1297 build/models.py:1555 build/serializers.py:210
+#: build/serializers.py:247 build/templates/build/build_base.html:102
+#: build/templates/build/detail.html:34 common/models.py:2430
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
-#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
-#: part/forms.py:48 part/models.py:3147 part/models.py:3981
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
+#: part/forms.py:48 part/models.py:3147 part/models.py:3982
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1288,7 +1293,7 @@ msgstr ""
#: report/templates/report/inventree_so_report_base.html:29
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:389
+#: stock/admin.py:160 stock/serializers.py:441
#: stock/templates/stock/item_base.html:287
#: stock/templates/stock/item_base.html:295
#: stock/templates/stock/item_base.html:342
@@ -1298,9 +1303,9 @@ msgstr ""
#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353
#: templates/js/translated/company.js:1808
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:230
#: templates/js/translated/order.js:304 templates/js/translated/part.js:961
-#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310
+#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3322
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
@@ -1315,43 +1320,43 @@ msgstr ""
#: templates/js/translated/sales_order.js:1698
#: templates/js/translated/sales_order.js:1824
#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992
-#: templates/js/translated/stock.js:3075
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2983
+#: templates/js/translated/stock.js:3066
msgid "Quantity"
msgstr "數量"
-#: build/models.py:1293
+#: build/models.py:1298
msgid "Required quantity for build order"
msgstr "生產工單所需數量"
-#: build/models.py:1373
+#: build/models.py:1378
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1382
+#: build/models.py:1387
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr "分配的數量({q})不能超過可用的庫存數量({a})"
-#: build/models.py:1392 order/models.py:1837
+#: build/models.py:1397 order/models.py:1837
msgid "Stock item is over-allocated"
msgstr "庫存品項超額分配"
-#: build/models.py:1398 order/models.py:1840
+#: build/models.py:1403 order/models.py:1840
msgid "Allocation quantity must be greater than zero"
msgstr "分配的數量必須大於零"
-#: build/models.py:1404
+#: build/models.py:1409
msgid "Quantity must be 1 for serialized stock"
msgstr "有序號的品項數量必須為1"
-#: build/models.py:1465
+#: build/models.py:1470
msgid "Selected stock item does not match BOM line"
msgstr "選擇的庫存品項和BOM的項目不符"
-#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128
-#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960
-#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10
+#: build/models.py:1542 build/serializers.py:811 order/serializers.py:1128
+#: order/serializers.py:1149 stock/serializers.py:544 stock/serializers.py:1012
+#: stock/serializers.py:1124 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:194
#: templates/js/translated/build.js:1740
@@ -1362,89 +1367,89 @@ msgstr "選擇的庫存品項和BOM的項目不符"
#: templates/js/translated/sales_order.js:1605
#: templates/js/translated/sales_order.js:1692
#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2939
msgid "Stock Item"
msgstr "庫存品項"
-#: build/models.py:1538
+#: build/models.py:1543
msgid "Source stock item"
msgstr "來源庫存項目"
-#: build/models.py:1551
+#: build/models.py:1556
msgid "Stock quantity to allocate to build"
msgstr "要分配的庫存數量"
-#: build/models.py:1559
+#: build/models.py:1564
msgid "Install into"
msgstr "安裝到"
-#: build/models.py:1560
+#: build/models.py:1565
msgid "Destination stock item"
msgstr "目的庫存品項"
-#: build/serializers.py:159 build/serializers.py:828
+#: build/serializers.py:160 build/serializers.py:840
#: templates/js/translated/build.js:1317
msgid "Build Output"
msgstr "產出"
-#: build/serializers.py:171
+#: build/serializers.py:172
msgid "Build output does not match the parent build"
msgstr "產出與上層生產工單不符"
-#: build/serializers.py:175
+#: build/serializers.py:176
msgid "Output part does not match BuildOrder part"
msgstr "產出零件與生產工單不符"
-#: build/serializers.py:179
+#: build/serializers.py:180
msgid "This build output has already been completed"
msgstr "此筆產出已完成"
-#: build/serializers.py:190
+#: build/serializers.py:191
msgid "This build output is not fully allocated"
msgstr "此筆產出的分配尚未完成"
-#: build/serializers.py:210 build/serializers.py:247
+#: build/serializers.py:211 build/serializers.py:248
msgid "Enter quantity for build output"
msgstr "輸入產出數量"
-#: build/serializers.py:268
+#: build/serializers.py:269
msgid "Integer quantity required for trackable parts"
msgstr "可追蹤的零件數量必須為整數"
-#: build/serializers.py:271
+#: build/serializers.py:272
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr "因為BOM包含可追蹤的零件,所以數量必須為整數"
-#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288
-#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149
+#: build/serializers.py:287 order/serializers.py:535 order/serializers.py:1288
+#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1149
#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
msgid "Serial Numbers"
msgstr "序號"
-#: build/serializers.py:287
+#: build/serializers.py:288
msgid "Enter serial numbers for build outputs"
msgstr "輸入產出的序號"
-#: build/serializers.py:300
+#: build/serializers.py:301
msgid "Auto Allocate Serial Numbers"
msgstr "自動分配序號"
-#: build/serializers.py:301
+#: build/serializers.py:302
msgid "Automatically allocate required items with matching serial numbers"
msgstr "自動為需要項目分配對應的序號"
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:337 stock/api.py:953
msgid "The following serial numbers already exist or are invalid"
msgstr "序號已存在或無效"
-#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527
+#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
msgid "A list of build outputs must be provided"
msgstr "必須提供產出清單"
-#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511
-#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056
-#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671
-#: stock/serializers.py:1104 stock/serializers.py:1360
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:511
+#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1067
+#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723
+#: stock/serializers.py:1156 stock/serializers.py:1412
#: stock/templates/stock/item_base.html:394
#: templates/js/translated/barcode.js:547
#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1456,223 +1461,223 @@ msgstr "必須提供產出清單"
#: templates/js/translated/sales_order.js:1627
#: templates/js/translated/sales_order.js:1706
#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171
-#: templates/js/translated/stock.js:2842
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2162
+#: templates/js/translated/stock.js:2833
msgid "Location"
msgstr "地點"
-#: build/serializers.py:426
+#: build/serializers.py:427
msgid "Stock location for scrapped outputs"
msgstr "報廢的庫存位置"
-#: build/serializers.py:432
+#: build/serializers.py:433
msgid "Discard Allocations"
msgstr "放棄分配"
-#: build/serializers.py:433
+#: build/serializers.py:434
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:438
+#: build/serializers.py:439
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:498
+#: build/serializers.py:499
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:504 build/templates/build/build_base.html:151
+#: build/serializers.py:505 build/templates/build/build_base.html:151
#: build/templates/build/detail.html:62 order/models.py:905
#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165
-#: stock/serializers.py:722 stock/serializers.py:1248
+#: stock/serializers.py:774 stock/serializers.py:1300
#: stock/templates/stock/item_base.html:427
#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187
#: templates/js/translated/purchase_order.js:1304
#: templates/js/translated/purchase_order.js:1719
#: templates/js/translated/return_order.js:331
#: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:2137 templates/js/translated/stock.js:2957
+#: templates/js/translated/stock.js:3082
msgid "Status"
msgstr "狀態"
-#: build/serializers.py:510
+#: build/serializers.py:511
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:511
+#: build/serializers.py:512
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:580
+#: build/serializers.py:592
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:581
+#: build/serializers.py:593
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:587
+#: build/serializers.py:599
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:588
+#: build/serializers.py:600
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:627
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:616
+#: build/serializers.py:628
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:617
+#: build/serializers.py:629
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:639
+#: build/serializers.py:651
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:641
+#: build/serializers.py:653
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:651
+#: build/serializers.py:663
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:656
+#: build/serializers.py:668
msgid "Accept Unallocated"
msgstr "接受未分配"
-#: build/serializers.py:657
+#: build/serializers.py:669
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:667 templates/js/translated/build.js:315
+#: build/serializers.py:679 templates/js/translated/build.js:315
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191
+#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1191
msgid "Accept Incomplete"
msgstr "接受不完整"
-#: build/serializers.py:673
+#: build/serializers.py:685
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:683 templates/js/translated/build.js:319
+#: build/serializers.py:695 templates/js/translated/build.js:319
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:692 templates/js/translated/build.js:303
+#: build/serializers.py:704 templates/js/translated/build.js:303
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:722
+#: build/serializers.py:734
msgid "Build Line"
msgstr ""
-#: build/serializers.py:732
+#: build/serializers.py:744
msgid "Build output"
msgstr ""
-#: build/serializers.py:740
+#: build/serializers.py:752
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:776
+#: build/serializers.py:788
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:790
+#: build/serializers.py:802
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:805 stock/serializers.py:973
+#: build/serializers.py:817 stock/serializers.py:1025
msgid "Item must be in stock"
msgstr "商品必須有庫存"
-#: build/serializers.py:853 order/serializers.py:1182
+#: build/serializers.py:865 order/serializers.py:1182
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:859
+#: build/serializers.py:871
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:866
+#: build/serializers.py:878
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:890 order/serializers.py:1434
+#: build/serializers.py:902 order/serializers.py:1434
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:947
+#: build/serializers.py:959
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:967
msgid "Exclude Location"
msgstr "排除位置"
-#: build/serializers.py:956
+#: build/serializers.py:968
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:961
+#: build/serializers.py:973
msgid "Interchangeable Stock"
msgstr "可互換庫存"
-#: build/serializers.py:962
+#: build/serializers.py:974
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:967
+#: build/serializers.py:979
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:968
+#: build/serializers.py:980
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:973
+#: build/serializers.py:985
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:974
+#: build/serializers.py:986
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: build/serializers.py:1090 part/models.py:3877 part/models.py:4313
+#: stock/api.py:720
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1087 templates/js/translated/index.js:130
+#: build/serializers.py:1099 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173
-#: part/serializers.py:1411 part/templates/part/part_base.html:210
+#: build/serializers.py:1104 part/admin.py:132 part/bom.py:173
+#: part/serializers.py:1422 part/templates/part/part_base.html:210
#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612
#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148
#: templates/js/translated/table_filters.js:170
msgid "On Order"
msgstr ""
-#: build/serializers.py:1097 part/serializers.py:1413
+#: build/serializers.py:1109 part/serializers.py:1424
#: templates/js/translated/build.js:2616
#: templates/js/translated/table_filters.js:360
msgid "In Production"
msgstr ""
-#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424
+#: build/serializers.py:1114 part/bom.py:172 part/serializers.py:1435
#: part/templates/part/part_base.html:192
#: templates/js/translated/sales_order.js:1893
msgid "Available Stock"
@@ -1852,7 +1857,7 @@ msgstr ""
#: templates/js/translated/pricing.js:929
#: templates/js/translated/sales_order.js:769
#: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2895
+#: templates/js/translated/stock.js:2886
msgid "Sales Order"
msgstr ""
@@ -1908,10 +1913,10 @@ msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:163
#: stock/templates/stock/item_base.html:162
#: templates/js/translated/build.js:1375
-#: templates/js/translated/model_renderers.js:233
+#: templates/js/translated/model_renderers.js:235
#: templates/js/translated/purchase_order.js:1270
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160
-#: templates/js/translated/stock.js:3098
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2151
+#: templates/js/translated/stock.js:3089
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:404
msgid "Batch"
@@ -2143,1340 +2148,1349 @@ msgstr ""
msgid "No plugin"
msgstr ""
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr ""
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1224
+#: common/models.py:1236
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr ""
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr "天"
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr "自動備份"
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr "啟動資料庫和媒體文件自動備份"
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr "自動備份間隔"
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1372
+#: common/models.py:1384
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1391
+#: common/models.py:1403
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
-#: report/models.py:180 templates/js/translated/table_filters.js:139
+#: common/models.py:1448 part/admin.py:108 part/models.py:3744
+#: report/models.py:180 stock/serializers.py:95
+#: templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:431 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr ""
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr ""
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr ""
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr ""
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
msgid "Enable project codes"
msgstr ""
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1956
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1985
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1987
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:2000 common/models.py:2400
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2041
msgid "Hide inactive parts"
msgstr ""
-#: common/models.py:2023
+#: common/models.py:2043
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2049
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2050
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2055
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2056
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2061
msgid "Show latest parts"
msgstr ""
-#: common/models.py:2042
+#: common/models.py:2062
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2067
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2068
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2073
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2074
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2079
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2080
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2085
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2086
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2091
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2092
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2097
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2098
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2103
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2104
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2109
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2110
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2115
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2096
+#: common/models.py:2116
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:2101
+#: common/models.py:2121
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2122
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2127
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2128
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2133
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2134
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2139
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2140
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2145
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2146
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2131
+#: common/models.py:2151
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2152
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2157
msgid "Inline label display"
msgstr ""
-#: common/models.py:2139
+#: common/models.py:2159
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2145
+#: common/models.py:2165
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2167
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2173
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2175
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2161
+#: common/models.py:2181
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2182
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2187
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2188
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2193
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2194
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2199
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2200
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2205
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2206
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2211
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2212
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2217
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2219
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2225
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2226
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2231
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2232
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2237
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2238
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2243
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2244
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2249
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2251
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2257
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2258
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2263
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2265
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2271
msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2252
+#: common/models.py:2272
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2277
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2279
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2285
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2287
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2293
msgid "Regex Search"
msgstr ""
-#: common/models.py:2274
+#: common/models.py:2294
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2299
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2300
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2305
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:2286
+#: common/models.py:2306
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:2291
+#: common/models.py:2311
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2312
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2317
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2318
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2323
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2324
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2337 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2338
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2343 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2345
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2351
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2353
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2359
msgid "Default part label template"
msgstr ""
-#: common/models.py:2340
+#: common/models.py:2360
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2365
msgid "Default stock item template"
msgstr ""
-#: common/models.py:2347
+#: common/models.py:2367
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2373
msgid "Default stock location label template"
msgstr ""
-#: common/models.py:2355
+#: common/models.py:2375
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2381
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2382
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2387
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2388
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2431
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2438 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3484,23 +3498,23 @@ msgstr ""
msgid "Price"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2439
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2610 common/models.py:2795
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2611
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2621
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2625 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3510,101 +3524,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2625
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2641 users/models.py:148
msgid "Token"
msgstr ""
-#: common/models.py:2622
+#: common/models.py:2642
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2650
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2651
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2759
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2760
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2768
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2769
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2777
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2778
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2785
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2786
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2796
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2801
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2802
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2928
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2930 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2934 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2936 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2938 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2941
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2958 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3614,31 +3628,31 @@ msgstr ""
msgid "Image"
msgstr ""
-#: common/models.py:2938
+#: common/models.py:2958
msgid "Image file"
msgstr ""
-#: common/models.py:2980
+#: common/models.py:3000
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:2999
+#: common/models.py:3019
msgid "Unit name"
msgstr ""
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3027
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3034 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3015
+#: common/models.py:3035
msgid "Unit definition"
msgstr ""
@@ -3849,7 +3863,7 @@ msgstr ""
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:736
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr ""
@@ -3942,7 +3956,7 @@ msgid "Link to address information (external)"
msgstr ""
#: company/models.py:481 company/models.py:780 stock/models.py:749
-#: stock/serializers.py:199 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:251 stock/templates/stock/item_base.html:142
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
@@ -3953,7 +3967,7 @@ msgstr ""
#: company/models.py:492 company/templates/company/company_base.html:76
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:467
+#: company/templates/company/supplier_part.html:145 part/serializers.py:478
#: stock/templates/stock/item_base.html:207
#: templates/js/translated/company.js:506
#: templates/js/translated/company.js:1108
@@ -3968,7 +3982,7 @@ msgid "Select manufacturer"
msgstr ""
#: company/models.py:499 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 part/serializers.py:477
+#: company/templates/company/supplier_part.html:153 part/serializers.py:488
#: templates/js/translated/company.js:351
#: templates/js/translated/company.js:1107
#: templates/js/translated/company.js:1302
@@ -4003,9 +4017,9 @@ msgstr ""
#: company/models.py:612
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2354 templates/js/translated/company.js:1156
+#: stock/models.py:2431 templates/js/translated/company.js:1156
#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1502
+#: templates/js/translated/stock.js:1511
msgid "Value"
msgstr ""
@@ -4014,7 +4028,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:620 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1004 part/models.py:3594
+#: part/admin.py:57 part/models.py:1004 part/models.py:3595
#: part/templates/part/part_base.html:284
#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4040,7 +4054,7 @@ msgstr ""
#: company/models.py:790 company/templates/company/company_base.html:81
#: company/templates/company/supplier_part.html:129 order/models.py:450
#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
-#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25
+#: part/serializers.py:462 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
#: templates/email/overdue_purchase_order.html:16
@@ -4057,7 +4071,7 @@ msgstr ""
msgid "Select supplier"
msgstr ""
-#: company/models.py:797 part/serializers.py:462
+#: company/models.py:797 part/serializers.py:473
msgid "Supplier stock keeping unit"
msgstr ""
@@ -4074,13 +4088,13 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:829 company/templates/company/supplier_part.html:187
-#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4017 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
#: report/templates/report/inventree_return_order_report_base.html:27
#: report/templates/report/inventree_slr_report.html:105
#: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:505
+#: stock/serializers.py:557
msgid "Note"
msgstr ""
@@ -4093,10 +4107,10 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:846 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258
+#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1310
#: stock/templates/stock/item_base.html:240
#: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2394
+#: templates/js/translated/stock.js:2385
msgid "Packaging"
msgstr ""
@@ -4199,13 +4213,13 @@ msgstr ""
#: company/templates/company/company_base.html:86 order/models.py:893
#: order/models.py:1975 order/templates/order/return_order_base.html:131
#: order/templates/order/sales_order_base.html:144 stock/models.py:802
-#: stock/models.py:803 stock/serializers.py:1008
+#: stock/models.py:803 stock/serializers.py:1060
#: stock/templates/stock/item_base.html:405
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:502
#: templates/js/translated/return_order.js:296
#: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2921
#: templates/js/translated/table_filters.js:800
msgid "Customer"
msgstr ""
@@ -4463,7 +4477,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:233
#: templates/js/translated/company.js:1590
#: templates/js/translated/purchase_order.js:761
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2241
msgid "Supplier Part"
msgstr ""
@@ -4509,7 +4523,7 @@ msgid "No supplier information available"
msgstr ""
#: company/templates/company/supplier_part.html:139 part/bom.py:279
-#: part/bom.py:311 part/serializers.py:461
+#: part/bom.py:311 part/serializers.py:472
#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786
#: templates/js/translated/pricing.js:510
#: templates/js/translated/purchase_order.js:1847
@@ -4561,12 +4575,12 @@ msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223
#: part/templates/part/category.html:183
#: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:708 stock/templates/stock/location.html:170
+#: stock/serializers.py:760 stock/templates/stock/location.html:170
#: stock/templates/stock/location.html:184
#: stock/templates/stock/location.html:196
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2728
#: users/models.py:193
msgid "Stock Items"
msgstr ""
@@ -4676,48 +4690,48 @@ msgstr ""
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -4800,7 +4814,7 @@ msgstr ""
#: templates/js/translated/purchase_order.js:168
#: templates/js/translated/purchase_order.js:762
#: templates/js/translated/purchase_order.js:1670
-#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878
+#: templates/js/translated/stock.js:2221 templates/js/translated/stock.js:2869
msgid "Purchase Order"
msgstr ""
@@ -4809,7 +4823,7 @@ msgstr ""
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
#: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2912
+#: templates/js/translated/stock.js:2903
msgid "Return Order"
msgstr ""
@@ -5008,9 +5022,9 @@ msgstr ""
msgid "Number of items received"
msgstr ""
-#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326
+#: order/models.py:1401 stock/models.py:921 stock/serializers.py:378
#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2281
+#: templates/js/translated/stock.js:2272
msgid "Purchase Price"
msgstr ""
@@ -5064,7 +5078,7 @@ msgid "User who checked this shipment"
msgstr ""
#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299
-#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446
+#: order/serializers.py:1409 templates/js/translated/model_renderers.js:448
msgid "Shipment"
msgstr ""
@@ -5726,12 +5740,12 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3868 part/stocktake.py:218
#: stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3869 part/stocktake.py:219
#: stock/admin.py:157
msgid "Part Name"
msgstr ""
@@ -5743,7 +5757,7 @@ msgstr ""
#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269
#: report/templates/report/inventree_slr_report.html:103
#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:1997
msgid "IPN"
msgstr ""
@@ -5811,11 +5825,11 @@ msgstr ""
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211
+#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
msgid "Parent ID"
msgstr ""
-#: part/admin.py:310 part/admin.py:399 stock/admin.py:62
+#: part/admin.py:310 part/admin.py:400 stock/admin.py:62
msgid "Parent Name"
msgstr ""
@@ -5824,7 +5838,7 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:323 part/models.py:388 part/serializers.py:343
+#: part/admin.py:323 part/models.py:388 part/serializers.py:354
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
#: part/templates/part/category.html:141 part/templates/part/category.html:161
#: part/templates/part/category_sidebar.html:9
@@ -5835,59 +5849,63 @@ msgstr ""
msgid "Parts"
msgstr "零件"
-#: part/admin.py:383
+#: part/admin.py:384
msgid "BOM Level"
msgstr ""
-#: part/admin.py:386
+#: part/admin.py:387
msgid "BOM Item ID"
msgstr ""
-#: part/admin.py:396
+#: part/admin.py:397
msgid "Parent IPN"
msgstr ""
-#: part/admin.py:407 part/models.py:3869
+#: part/admin.py:408 part/models.py:3870
msgid "Part IPN"
msgstr ""
-#: part/admin.py:420 part/serializers.py:1190
+#: part/admin.py:421 part/serializers.py:1201
#: templates/js/translated/pricing.js:358
#: templates/js/translated/pricing.js:1024
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:425 part/serializers.py:1205
+#: part/admin.py:426 part/serializers.py:1216
#: templates/js/translated/pricing.js:353
#: templates/js/translated/pricing.js:1032
msgid "Maximum Price"
msgstr ""
-#: part/api.py:534
+#: part/api.py:402
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:568
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:552
+#: part/api.py:586
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:568
+#: part/api.py:602
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:652
+#: part/api.py:686
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:799
+#: part/api.py:833
msgid "Valid"
msgstr ""
-#: part/api.py:800
+#: part/api.py:834
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:806
+#: part/api.py:840
msgid "This option must be selected"
msgstr ""
@@ -5904,7 +5922,7 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16
+#: part/models.py:81 part/models.py:3814 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -5919,7 +5937,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743
+#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2734
#: templates/js/translated/table_filters.js:239
#: templates/js/translated/table_filters.js:283
msgid "Structural"
@@ -5985,7 +6003,7 @@ msgstr ""
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:850 part/models.py:3868
+#: part/models.py:850 part/models.py:3869
msgid "Part name"
msgstr ""
@@ -6009,9 +6027,9 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:891 part/models.py:3371 part/models.py:3812
-#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/models.py:891 part/models.py:3371 part/models.py:3813
+#: part/serializers.py:369 part/serializers.py:1057
+#: part/templates/part/part_base.html:260 stock/api.py:708
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -6276,7 +6294,7 @@ msgstr ""
#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
#: templates/js/translated/pricing.js:950
#: templates/js/translated/purchase_order.js:1728
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2783
msgid "Date"
msgstr ""
@@ -6328,556 +6346,572 @@ msgstr ""
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3418
+#: part/models.py:3424
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:3435
+#: part/models.py:3434
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:3456 templates/js/translated/part.js:2868
+#: part/models.py:3450 templates/js/translated/part.js:2868
msgid "Test Name"
msgstr ""
-#: part/models.py:3457
+#: part/models.py:3451
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3464
-msgid "Test Description"
+#: part/models.py:3457
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3458
+msgid "Simplified key for the test"
msgstr ""
#: part/models.py:3465
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3466
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3470 templates/js/translated/part.js:2877
+#: part/models.py:3471 templates/js/translated/part.js:2889
#: templates/js/translated/table_filters.js:477
msgid "Required"
msgstr ""
-#: part/models.py:3471
+#: part/models.py:3472
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3476 templates/js/translated/part.js:2885
+#: part/models.py:3477 templates/js/translated/part.js:2897
msgid "Requires Value"
msgstr ""
-#: part/models.py:3477
+#: part/models.py:3478
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3482 templates/js/translated/part.js:2892
+#: part/models.py:3483 templates/js/translated/part.js:2904
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3484
+#: part/models.py:3485
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3531
+#: part/models.py:3532
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3536
+#: part/models.py:3537
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3556
+#: part/models.py:3557
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3573
+#: part/models.py:3574
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3588
+#: part/models.py:3589
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3595
+#: part/models.py:3596
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3603
+#: part/models.py:3604
msgid "Parameter description"
msgstr ""
-#: part/models.py:3609 templates/js/translated/part.js:1627
+#: part/models.py:3610 templates/js/translated/part.js:1627
#: templates/js/translated/table_filters.js:817
msgid "Checkbox"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3611
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3615 templates/js/translated/part.js:1636
+#: part/models.py:3616 templates/js/translated/part.js:1636
msgid "Choices"
msgstr ""
-#: part/models.py:3616
+#: part/models.py:3617
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3693
+#: part/models.py:3694
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3736
+#: part/models.py:3737
msgid "Parent Part"
msgstr ""
-#: part/models.py:3744 part/models.py:3820 part/models.py:3821
+#: part/models.py:3745 part/models.py:3821 part/models.py:3822
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3749
+#: part/models.py:3750
msgid "Data"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3751
msgid "Parameter Value"
msgstr ""
-#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3828 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:3828
+#: part/models.py:3829
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:3866
+#: part/models.py:3867
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:3867
+#: part/models.py:3868
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:3869
+#: part/models.py:3870
msgid "Part IPN value"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "Level"
msgstr ""
-#: part/models.py:3870
+#: part/models.py:3871
msgid "BOM level"
msgstr ""
-#: part/models.py:3960
+#: part/models.py:3961
msgid "Select parent part"
msgstr ""
-#: part/models.py:3970
+#: part/models.py:3971
msgid "Sub part"
msgstr ""
-#: part/models.py:3971
+#: part/models.py:3972
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:3982
+#: part/models.py:3983
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:3988
+#: part/models.py:3989
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:3994
+#: part/models.py:3995
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4001 part/templates/part/upload_bom.html:55
+#: part/models.py:4002 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4003
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4009
+#: part/models.py:4010
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4017
+#: part/models.py:4018
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4023
+#: part/models.py:4024
msgid "Checksum"
msgstr ""
-#: part/models.py:4024
+#: part/models.py:4025
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4029 templates/js/translated/table_filters.js:174
+#: part/models.py:4030 templates/js/translated/table_filters.js:174
msgid "Validated"
msgstr ""
-#: part/models.py:4030
+#: part/models.py:4031
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4035 part/templates/part/upload_bom.html:57
+#: part/models.py:4036 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:178
#: templates/js/translated/table_filters.js:211
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4036
+#: part/models.py:4037
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4041 part/templates/part/upload_bom.html:56
+#: part/models.py:4042 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:1046
msgid "Allow Variants"
msgstr ""
-#: part/models.py:4042
+#: part/models.py:4043
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4127 stock/models.py:646
+#: part/models.py:4128 stock/models.py:646
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4137 part/models.py:4139
+#: part/models.py:4138 part/models.py:4140
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4279
+#: part/models.py:4280
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4300
+#: part/models.py:4301
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4313
+#: part/models.py:4314
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4321
+#: part/models.py:4322
msgid "Substitute part"
msgstr ""
-#: part/models.py:4337
+#: part/models.py:4338
msgid "Part 1"
msgstr ""
-#: part/models.py:4345
+#: part/models.py:4346
msgid "Part 2"
msgstr ""
-#: part/models.py:4346
+#: part/models.py:4347
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4365
+#: part/models.py:4366
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4370
+#: part/models.py:4371
msgid "Duplicate relationship already exists"
msgstr ""
-#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332
+#: part/serializers.py:164
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:165
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:189 part/serializers.py:207 stock/serializers.py:384
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:349
+#: part/serializers.py:360
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:359
+#: part/serializers.py:370
msgid "Select category"
msgstr ""
-#: part/serializers.py:389
+#: part/serializers.py:400
msgid "Original Part"
msgstr ""
-#: part/serializers.py:390
+#: part/serializers.py:401
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:395
+#: part/serializers.py:406
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:396
+#: part/serializers.py:407
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:402 part/templates/part/detail.html:277
+#: part/serializers.py:413 part/templates/part/detail.html:277
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:403
+#: part/serializers.py:414
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:409
+#: part/serializers.py:420
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:410
+#: part/serializers.py:421
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:416
+#: part/serializers.py:427
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:417
+#: part/serializers.py:428
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:430
+#: part/serializers.py:441
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:432
+#: part/serializers.py:443
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:439
+#: part/serializers.py:450
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:440
+#: part/serializers.py:451
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:452
+#: part/serializers.py:463
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:468
+#: part/serializers.py:479
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:478
+#: part/serializers.py:489
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:485
+#: part/serializers.py:496
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:505
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:505
+#: part/serializers.py:516
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:523
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:785 part/templates/part/copy_part.html:9
+#: part/serializers.py:796 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:471
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:786
+#: part/serializers.py:797
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:792 templates/js/translated/part.js:102
+#: part/serializers.py:803 templates/js/translated/part.js:102
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:793
+#: part/serializers.py:804
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:799
+#: part/serializers.py:810
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:800
+#: part/serializers.py:811
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:819
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:820
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:825
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:826
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:832
+#: part/serializers.py:843
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1038
+#: part/serializers.py:1049
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1048
+#: part/serializers.py:1059
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1058
+#: part/serializers.py:1069
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1064
+#: part/serializers.py:1075
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1065
+#: part/serializers.py:1076
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1070
+#: part/serializers.py:1081
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1071
+#: part/serializers.py:1082
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1076
+#: part/serializers.py:1087
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1077
+#: part/serializers.py:1088
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1085
+#: part/serializers.py:1096
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1191
+#: part/serializers.py:1202
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1198
+#: part/serializers.py:1209
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1206
+#: part/serializers.py:1217
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1213
+#: part/serializers.py:1224
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1242
+#: part/serializers.py:1253
msgid "Update"
msgstr ""
-#: part/serializers.py:1243
+#: part/serializers.py:1254
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1266
+#: part/serializers.py:1277
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1273
+#: part/serializers.py:1284
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1276
+#: part/serializers.py:1287
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1602
+#: part/serializers.py:1613
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1610
+#: part/serializers.py:1621
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1611
+#: part/serializers.py:1622
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1616
+#: part/serializers.py:1627
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1617
+#: part/serializers.py:1628
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1622
+#: part/serializers.py:1633
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1623
+#: part/serializers.py:1634
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1628
+#: part/serializers.py:1639
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1629
+#: part/serializers.py:1640
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1663
+#: part/serializers.py:1674
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1664
+#: part/serializers.py:1675
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1694
+#: part/serializers.py:1705
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1738
+#: part/serializers.py:1749
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1741
+#: part/serializers.py:1752
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1744
+#: part/serializers.py:1755
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1753
+#: part/serializers.py:1764
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:1761
+#: part/serializers.py:1772
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:1782
+#: part/serializers.py:1793
msgid "At least one BOM item is required"
msgstr ""
@@ -7040,7 +7074,7 @@ msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2186 users/models.py:191
+#: templates/js/translated/stock.js:2177 users/models.py:191
msgid "Stocktake"
msgstr ""
@@ -7274,7 +7308,7 @@ msgstr ""
#: part/templates/part/part_base.html:146
#: templates/js/translated/company.js:1277
#: templates/js/translated/company.js:1565
-#: templates/js/translated/model_renderers.js:304
+#: templates/js/translated/model_renderers.js:306
#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
msgid "Inactive"
msgstr ""
@@ -7402,7 +7436,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2040 templates/navbar.html:31
+#: templates/js/translated/stock.js:2031 templates/navbar.html:31
msgid "Stock"
msgstr "庫存"
@@ -7448,7 +7482,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:446
#: templates/js/translated/company.js:1693
#: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2216
+#: templates/js/translated/stock.js:2207
msgid "Last Updated"
msgstr ""
@@ -7771,7 +7805,7 @@ msgstr ""
msgid "Error rendering label to HTML"
msgstr ""
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
msgid "Error rendering label to PNG"
msgstr ""
@@ -8059,17 +8093,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8361,7 +8395,7 @@ msgstr ""
#: stock/models.py:807 stock/templates/stock/item_base.html:311
#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362
#: templates/js/translated/build.js:2351
-#: templates/js/translated/model_renderers.js:222
+#: templates/js/translated/model_renderers.js:224
#: templates/js/translated/return_order.js:540
#: templates/js/translated/return_order.js:724
#: templates/js/translated/sales_order.js:315
@@ -8384,12 +8418,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2344 templates/js/translated/stock.js:1475
+#: templates/js/translated/stock.js:1484
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Result"
msgstr ""
@@ -8416,7 +8450,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:168
#: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3072
msgid "Serial"
msgstr ""
@@ -8500,48 +8534,48 @@ msgstr ""
#: stock/admin.py:256 stock/models.py:881
#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2200 users/models.py:113
+#: templates/js/translated/stock.js:2191 users/models.py:113
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:543 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:728
msgid "Part Tree"
msgstr ""
-#: stock/api.py:753
+#: stock/api.py:756
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:760
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:763 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:849
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:855
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:886
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:896
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:927
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -8582,7 +8616,7 @@ msgstr ""
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:173 templates/js/translated/stock.js:2752
+#: stock/models.py:173 templates/js/translated/stock.js:2743
#: templates/js/translated/table_filters.js:243
msgid "External"
msgstr ""
@@ -8591,7 +8625,7 @@ msgstr ""
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:180 templates/js/translated/stock.js:2761
+#: stock/models.py:180 templates/js/translated/stock.js:2752
#: templates/js/translated/table_filters.js:246
msgid "Location type"
msgstr ""
@@ -8608,7 +8642,7 @@ msgstr ""
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:653 stock/serializers.py:223
+#: stock/models.py:653 stock/serializers.py:275
msgid "Stock item cannot be created for virtual parts"
msgstr ""
@@ -8653,7 +8687,7 @@ msgstr ""
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:781 stock/serializers.py:1259
+#: stock/models.py:781 stock/serializers.py:1311
msgid "Packaging this stock item is stored in"
msgstr ""
@@ -8665,7 +8699,7 @@ msgstr ""
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:825 stock/serializers.py:1242
+#: stock/models.py:825 stock/serializers.py:1294
msgid "Batch code for this stock item"
msgstr ""
@@ -8742,249 +8776,257 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1496 stock/serializers.py:455
+#: stock/models.py:1496 stock/serializers.py:507
msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1563
+#: stock/models.py:1593
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1611
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1567
+#: stock/models.py:1615
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1570
+#: stock/models.py:1618
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1573
+#: stock/models.py:1621
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1576
+#: stock/models.py:1624
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1579
+#: stock/models.py:1627
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1586 stock/serializers.py:1148
+#: stock/models.py:1634 stock/serializers.py:1200
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1590
+#: stock/models.py:1638
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1598
+#: stock/models.py:1646
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1603
+#: stock/models.py:1651
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1807
+#: stock/models.py:1868
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2264
+#: stock/models.py:2329
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2323
+#: stock/models.py:2392
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2329
+#: stock/models.py:2398
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2344
-msgid "Test name"
-msgstr ""
-
-#: stock/models.py:2348
+#: stock/models.py:2425
msgid "Test result"
msgstr ""
-#: stock/models.py:2355
+#: stock/models.py:2432
msgid "Test output value"
msgstr ""
-#: stock/models.py:2363
+#: stock/models.py:2440
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2367
+#: stock/models.py:2444
msgid "Test notes"
msgstr ""
-#: stock/serializers.py:117
+#: stock/serializers.py:96
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:115
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:169
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:215
+#: stock/serializers.py:267
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:328
+#: stock/serializers.py:380
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:390
+#: stock/serializers.py:442
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:403
+#: stock/serializers.py:455
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:410
+#: stock/serializers.py:462
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361
+#: stock/serializers.py:473 stock/serializers.py:1157 stock/serializers.py:1413
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:428
+#: stock/serializers.py:480
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:438
+#: stock/serializers.py:490
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:493
+#: stock/serializers.py:545
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:500
+#: stock/serializers.py:552
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:501
+#: stock/serializers.py:553
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677
-#: stock/serializers.py:727
+#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729
+#: stock/serializers.py:779
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:514
+#: stock/serializers.py:566
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:522
+#: stock/serializers.py:574
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:529
+#: stock/serializers.py:581
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:541
+#: stock/serializers.py:593
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:576
+#: stock/serializers.py:628
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:663
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:624
+#: stock/serializers.py:676
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:693
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:672
+#: stock/serializers.py:724
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:761
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:715
+#: stock/serializers.py:767
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:977
+#: stock/serializers.py:1029
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:981
+#: stock/serializers.py:1033
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:985
+#: stock/serializers.py:1037
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1009
+#: stock/serializers.py:1061
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1067
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1023
+#: stock/serializers.py:1075
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1033 stock/serializers.py:1287
+#: stock/serializers.py:1085 stock/serializers.py:1339
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1112
+#: stock/serializers.py:1164
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1117
+#: stock/serializers.py:1169
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1118
+#: stock/serializers.py:1170
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1123
+#: stock/serializers.py:1175
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1124
+#: stock/serializers.py:1176
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1134
+#: stock/serializers.py:1186
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1201
+#: stock/serializers.py:1253
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1230
+#: stock/serializers.py:1282
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1249
+#: stock/serializers.py:1301
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1277
+#: stock/serializers.py:1329
msgid "Stock transaction notes"
msgstr ""
@@ -9009,7 +9051,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9025,15 +9067,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3233
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1660
msgid "Add Test Result"
msgstr ""
@@ -9056,17 +9098,17 @@ msgid "Stock adjustment actions"
msgstr ""
#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1783
msgid "Count stock"
msgstr ""
#: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1774
+#: templates/js/translated/stock.js:1765
msgid "Add stock"
msgstr ""
#: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:1774
msgid "Remove stock"
msgstr ""
@@ -9075,12 +9117,12 @@ msgid "Serialize stock"
msgstr ""
#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1792
msgid "Transfer stock"
msgstr ""
#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1855
+#: templates/js/translated/stock.js:1846
msgid "Assign to customer"
msgstr ""
@@ -9219,7 +9261,7 @@ msgid "No stocktake performed"
msgstr ""
#: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1913
msgid "stock item"
msgstr ""
@@ -9330,7 +9372,7 @@ msgid "New Location"
msgstr ""
#: stock/templates/stock/location.html:289
-#: templates/js/translated/stock.js:2543
+#: templates/js/translated/stock.js:2534
msgid "stock location"
msgstr ""
@@ -9835,7 +9877,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -9946,7 +9988,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10294,7 +10336,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr ""
@@ -10537,7 +10579,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3187
+#: templates/js/translated/part.js:3199
msgid "Minimum Quantity"
msgstr ""
@@ -11248,9 +11290,9 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
+#: templates/js/translated/stock.js:1944 templates/js/translated/stock.js:2672
msgid "Select"
msgstr ""
@@ -11262,7 +11304,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013
+#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3004
msgid "No user information"
msgstr ""
@@ -11323,7 +11365,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836
+#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1827
msgid "Order stock"
msgstr ""
@@ -11619,61 +11661,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -12150,7 +12192,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2640
+#: templates/js/translated/stock.js:2631
msgid "Display as list"
msgstr ""
@@ -12162,7 +12204,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2651
msgid "Display as tree"
msgstr ""
@@ -12178,56 +12220,60 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436
+#: templates/js/translated/part.js:2875 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2917 templates/js/translated/stock.js:1445
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437
-#: templates/js/translated/stock.js:1699
+#: templates/js/translated/part.js:2918 templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1690
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:2910
+#: templates/js/translated/part.js:2922
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:2926
+#: templates/js/translated/part.js:2938
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:2940
+#: templates/js/translated/part.js:2952
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020
+#: templates/js/translated/part.js:3031 templates/js/translated/part.js:3032
msgid "No date specified"
msgstr ""
-#: templates/js/translated/part.js:3022
+#: templates/js/translated/part.js:3034
msgid "Specified date is in the past"
msgstr ""
-#: templates/js/translated/part.js:3028
+#: templates/js/translated/part.js:3040
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3078
+#: templates/js/translated/part.js:3090
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3084
+#: templates/js/translated/part.js:3096
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3180
+#: templates/js/translated/part.js:3192
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3196
+#: templates/js/translated/part.js:3208
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3241
+#: templates/js/translated/part.js:3253
msgid "Minimum Stock Level"
msgstr ""
@@ -12760,7 +12806,7 @@ msgstr ""
#: templates/js/translated/sales_order.js:1623
#: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1744
+#: templates/js/translated/stock.js:1735
msgid "Shipped to customer"
msgstr ""
@@ -12810,10 +12856,6 @@ msgstr ""
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:342
-msgid "results"
-msgstr ""
-
#: templates/js/translated/search.js:352
msgid "Minimize results"
msgstr ""
@@ -13022,7 +13064,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3261
msgid "Select Stock Items"
msgstr ""
@@ -13046,248 +13088,248 @@ msgstr ""
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1439
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1442
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1465
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1520
+#: templates/js/translated/stock.js:1529
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1682
+#: templates/js/translated/stock.js:1675
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1704
+#: templates/js/translated/stock.js:1695
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1727
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1740
+#: templates/js/translated/stock.js:1731
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:1739
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1754
+#: templates/js/translated/stock.js:1745
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1810
+#: templates/js/translated/stock.js:1801
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1819
+#: templates/js/translated/stock.js:1810
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1868
+#: templates/js/translated/stock.js:1859
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:1923
+#: templates/js/translated/stock.js:1914
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:1928
+#: templates/js/translated/stock.js:1919
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:1939
+#: templates/js/translated/stock.js:1930
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:1983
+#: templates/js/translated/stock.js:1974
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2061
+#: templates/js/translated/stock.js:2052
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2066
+#: templates/js/translated/stock.js:2057
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2060
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2063
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2065
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2076
+#: templates/js/translated/stock.js:2067
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2079
+#: templates/js/translated/stock.js:2070
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2081
+#: templates/js/translated/stock.js:2072
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2076
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2078
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2092
+#: templates/js/translated/stock.js:2083
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2094
+#: templates/js/translated/stock.js:2085
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2096
+#: templates/js/translated/stock.js:2087
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2100
+#: templates/js/translated/stock.js:2091
#: templates/js/translated/table_filters.js:350
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2265
+#: templates/js/translated/stock.js:2256
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2312
+#: templates/js/translated/stock.js:2303
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2431
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2544
+#: templates/js/translated/stock.js:2535
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2699
+#: templates/js/translated/stock.js:2690
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2817
+#: templates/js/translated/stock.js:2808
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2821
+#: templates/js/translated/stock.js:2812
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2833
+#: templates/js/translated/stock.js:2824
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2855
+#: templates/js/translated/stock.js:2846
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2872
+#: templates/js/translated/stock.js:2863
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2887
+#: templates/js/translated/stock.js:2878
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2904
+#: templates/js/translated/stock.js:2895
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2921
+#: templates/js/translated/stock.js:2912
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2940
+#: templates/js/translated/stock.js:2931
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2958
+#: templates/js/translated/stock.js:2949
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2976
+#: templates/js/translated/stock.js:2967
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2984
+#: templates/js/translated/stock.js:2975
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3056
+#: templates/js/translated/stock.js:3047
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3101 templates/js/translated/stock.js:3137
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3159
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3180
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3181
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3183
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3184
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3185
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3186
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3199
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3262
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3275
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3279
msgid "Change Stock Status"
msgstr ""
diff --git a/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po b/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po
index 19cd1826b848..8d404912e694 100644
--- a/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po
+++ b/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-02-15 00:38+0000\n"
+"POT-Creation-Date: 2024-02-16 07:34+0000\n"
"PO-Revision-Date: 2023-02-28 22:38\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
@@ -414,7 +414,7 @@ msgstr "附件"
msgid "Select file to attach"
msgstr "选择附件"
-#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144
+#: InvenTree/models.py:568 common/models.py:2924 company/models.py:144
#: company/models.py:449 company/models.py:506 company/models.py:813
#: order/models.py:278 order/models.py:1271 order/models.py:1674
#: part/admin.py:55 part/models.py:914
@@ -445,9 +445,9 @@ msgstr "注释"
msgid "File comment"
msgstr "文件注释"
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388
-#: common/models.py:2389 common/models.py:2613 common/models.py:2614
-#: common/models.py:2859 common/models.py:2860 part/models.py:3170
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2400
+#: common/models.py:2401 common/models.py:2625 common/models.py:2626
+#: common/models.py:2871 common/models.py:2872 part/models.py:3170
#: part/models.py:3257 part/models.py:3350 part/models.py:3378
#: plugin/models.py:251 plugin/models.py:252
#: report/templates/report/inventree_test_report_base.html:105
@@ -492,7 +492,7 @@ msgstr ""
msgid "Invalid choice"
msgstr "选择无效"
-#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998
+#: InvenTree/models.py:894 common/models.py:2612 common/models.py:3010
#: common/serializers.py:370 company/models.py:605 label/models.py:115
#: machine/models.py:24 part/models.py:850 part/models.py:3587
#: plugin/models.py:41 report/models.py:174 stock/models.py:75
@@ -1129,7 +1129,7 @@ msgstr "此次生产匹配的订单"
#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967
#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/stock.js:3207
msgid "Part"
msgstr "商品"
@@ -1329,7 +1329,7 @@ msgstr "生产备注"
#: build/models.py:1292 build/models.py:1550 build/serializers.py:209
#: build/serializers.py:246 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2410
+#: build/templates/build/detail.html:34 common/models.py:2422
#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415
#: part/forms.py:48 part/models.py:3147 part/models.py:3981
@@ -1491,7 +1491,7 @@ msgstr "自动分配序列号"
msgid "Automatically allocate required items with matching serial numbers"
msgstr "自动为所需项分配对应的序列号"
-#: build/serializers.py:336 stock/api.py:950
+#: build/serializers.py:336 stock/api.py:952
msgid "The following serial numbers already exist or are invalid"
msgstr "以下序列号已存在或无效"
@@ -1718,7 +1718,7 @@ msgid "Allocate optional BOM items to build order"
msgstr "分配可选的BOM项目来建立订单"
#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312
-#: stock/api.py:717
+#: stock/api.py:719
msgid "BOM Item"
msgstr "BOM项"
@@ -2232,1380 +2232,1380 @@ msgstr "无效的域名: {domain}"
msgid "No plugin"
msgstr "子类别"
-#: common/models.py:1215
+#: common/models.py:1227
msgid "Restart required"
msgstr "需要重启"
-#: common/models.py:1217
+#: common/models.py:1229
msgid "A setting has been changed which requires a server restart"
msgstr "设置已更改,需要服务器重启"
-#: common/models.py:1224
+#: common/models.py:1236
#, fuzzy
#| msgid "Printing Actions"
msgid "Pending migrations"
msgstr "打印操作"
-#: common/models.py:1225
+#: common/models.py:1237
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1230
+#: common/models.py:1242
msgid "Server Instance Name"
msgstr "服务器实例名称"
-#: common/models.py:1232
+#: common/models.py:1244
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1236
+#: common/models.py:1248
msgid "Use instance name"
msgstr ""
-#: common/models.py:1237
+#: common/models.py:1249
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1254
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1243
+#: common/models.py:1255
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1248 company/models.py:106 company/models.py:107
+#: common/models.py:1260 company/models.py:106 company/models.py:107
msgid "Company name"
msgstr "公司名称"
-#: common/models.py:1249
+#: common/models.py:1261
msgid "Internal company name"
msgstr "内部公司名称"
-#: common/models.py:1253
+#: common/models.py:1265
msgid "Base URL"
msgstr ""
-#: common/models.py:1254
+#: common/models.py:1266
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1260
+#: common/models.py:1272
msgid "Default Currency"
msgstr ""
-#: common/models.py:1261
+#: common/models.py:1273
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1267
+#: common/models.py:1279
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1281
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1272 common/models.py:1328 common/models.py:1341
-#: common/models.py:1349 common/models.py:1358 common/models.py:1367
-#: common/models.py:1569 common/models.py:1591 common/models.py:1700
-#: common/models.py:1963
+#: common/models.py:1284 common/models.py:1340 common/models.py:1353
+#: common/models.py:1361 common/models.py:1370 common/models.py:1379
+#: common/models.py:1581 common/models.py:1603 common/models.py:1712
+#: common/models.py:1975
msgid "days"
msgstr "天"
-#: common/models.py:1276
+#: common/models.py:1288
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1289
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1282
+#: common/models.py:1294
msgid "Download from URL"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1296
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1302
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1303
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1309
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1311
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1316
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1317
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1310
+#: common/models.py:1322
msgid "Require confirm"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1323
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1316
+#: common/models.py:1328
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1330
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1336
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1337
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1343
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1344
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1337
+#: common/models.py:1349
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1350
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1344
+#: common/models.py:1356
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1358
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1365
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1367
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1362
+#: common/models.py:1374
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1364
+#: common/models.py:1376
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1383 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1372
+#: common/models.py:1384
#, fuzzy
#| msgid "Enable barcode scanner support"
msgid "Enable barcode scanner support in the web interface"
msgstr "启用条形码扫描支持"
-#: common/models.py:1377
+#: common/models.py:1389
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1390
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1384
+#: common/models.py:1396
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1397
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1390
+#: common/models.py:1402
#, fuzzy
#| msgid "Part description"
msgid "Part Revisions"
msgstr "商品描述"
-#: common/models.py:1391
+#: common/models.py:1403
#, fuzzy
#| msgid "Enable internal prices for parts"
msgid "Enable revision field for Part"
msgstr "启用内部商品价格"
-#: common/models.py:1396
+#: common/models.py:1408
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1397
+#: common/models.py:1409
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1412
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1413
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1406
+#: common/models.py:1418
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1419
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1412
+#: common/models.py:1424
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1425
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1418
+#: common/models.py:1430
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1431
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1424
+#: common/models.py:1436
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1437
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1443
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1436 part/admin.py:108 part/models.py:3743
+#: common/models.py:1448 part/admin.py:108 part/models.py:3743
#: report/models.py:180 templates/js/translated/table_filters.js:139
#: templates/js/translated/table_filters.js:763
msgid "Template"
msgstr "模板"
-#: common/models.py:1437
+#: common/models.py:1449
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011
+#: common/models.py:1454 part/admin.py:91 part/admin.py:430 part/models.py:1011
#: templates/js/translated/bom.js:1633
#: templates/js/translated/table_filters.js:330
#: templates/js/translated/table_filters.js:717
msgid "Assembly"
msgstr "组装"
-#: common/models.py:1443
+#: common/models.py:1455
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1448 part/admin.py:95 part/models.py:1017
+#: common/models.py:1460 part/admin.py:95 part/models.py:1017
#: templates/js/translated/table_filters.js:725
msgid "Component"
msgstr "组件"
-#: common/models.py:1449
+#: common/models.py:1461
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1454 part/admin.py:100 part/models.py:1029
+#: common/models.py:1466 part/admin.py:100 part/models.py:1029
msgid "Purchaseable"
msgstr "可购买"
-#: common/models.py:1455
+#: common/models.py:1467
msgid "Parts are purchaseable by default"
msgstr "商品默认可购买"
-#: common/models.py:1460 part/admin.py:104 part/models.py:1035
+#: common/models.py:1472 part/admin.py:104 part/models.py:1035
#: templates/js/translated/table_filters.js:751
msgid "Salable"
msgstr "可销售"
-#: common/models.py:1461
+#: common/models.py:1473
msgid "Parts are salable by default"
msgstr "商品默认可销售"
-#: common/models.py:1466 part/admin.py:113 part/models.py:1023
+#: common/models.py:1478 part/admin.py:113 part/models.py:1023
#: templates/js/translated/table_filters.js:147
#: templates/js/translated/table_filters.js:223
#: templates/js/translated/table_filters.js:767
msgid "Trackable"
msgstr "可追踪"
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Parts are trackable by default"
msgstr "商品默认可跟踪"
-#: common/models.py:1472 part/admin.py:117 part/models.py:1045
+#: common/models.py:1484 part/admin.py:117 part/models.py:1045
#: part/templates/part/part_base.html:154
#: templates/js/translated/table_filters.js:143
#: templates/js/translated/table_filters.js:771
msgid "Virtual"
msgstr "虚拟"
-#: common/models.py:1473
+#: common/models.py:1485
msgid "Parts are virtual by default"
msgstr "商品默认是虚拟的"
-#: common/models.py:1478
+#: common/models.py:1490
msgid "Show Import in Views"
msgstr "视图中显示导入"
-#: common/models.py:1479
+#: common/models.py:1491
msgid "Display the import wizard in some part views"
msgstr "在一些商品视图中显示导入向导"
-#: common/models.py:1484
+#: common/models.py:1496
msgid "Show related parts"
msgstr "显示相关商品"
-#: common/models.py:1485
+#: common/models.py:1497
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1502
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1491
+#: common/models.py:1503
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1496 templates/js/translated/part.js:107
+#: common/models.py:1508 templates/js/translated/part.js:107
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1498
+#: common/models.py:1510
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1504
+#: common/models.py:1516
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1505
+#: common/models.py:1517
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1511
+#: common/models.py:1523
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1512
+#: common/models.py:1524
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1516
+#: common/models.py:1528
#, fuzzy
#| msgid "Parameter units"
msgid "Enforce Parameter Units"
msgstr "参数单位"
-#: common/models.py:1518
+#: common/models.py:1530
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1524
+#: common/models.py:1536
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1538
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1544
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1534
+#: common/models.py:1546
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1540
+#: common/models.py:1552
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1542
+#: common/models.py:1554
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1548
+#: common/models.py:1560
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1550
+#: common/models.py:1562
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1556
+#: common/models.py:1568
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1570
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1576
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1578
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1573
+#: common/models.py:1585
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1579
+#: common/models.py:1591
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1581
+#: common/models.py:1593
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1599
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1589
+#: common/models.py:1601
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1596
+#: common/models.py:1608
msgid "Internal Prices"
msgstr "内部价格"
-#: common/models.py:1597
+#: common/models.py:1609
msgid "Enable internal prices for parts"
msgstr "启用内部商品价格"
-#: common/models.py:1602
+#: common/models.py:1614
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1604
+#: common/models.py:1616
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1610
+#: common/models.py:1622
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1611
+#: common/models.py:1623
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1628
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1618
+#: common/models.py:1630
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1636
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1625
+#: common/models.py:1637
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1630 templates/stats.html:25
+#: common/models.py:1642 templates/stats.html:25
msgid "Debug Mode"
msgstr "调试模式"
-#: common/models.py:1631
+#: common/models.py:1643
msgid "Generate reports in debug mode (HTML output)"
msgstr "在调试模式生成报告(HTML输出)"
-#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28
+#: common/models.py:1648 plugin/builtin/labels/label_sheet.py:28
#: report/models.py:201
msgid "Page Size"
msgstr "页面大小"
-#: common/models.py:1637
+#: common/models.py:1649
msgid "Default page size for PDF reports"
msgstr "PDF 报表默认页面大小"
-#: common/models.py:1642
+#: common/models.py:1654
msgid "Enable Test Reports"
msgstr ""
-#: common/models.py:1643
+#: common/models.py:1655
msgid "Enable generation of test reports"
msgstr "启用生成测试报表"
-#: common/models.py:1648
+#: common/models.py:1660
msgid "Attach Test Reports"
msgstr ""
-#: common/models.py:1650
+#: common/models.py:1662
msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
-#: common/models.py:1656
+#: common/models.py:1668
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1657
+#: common/models.py:1669
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1674
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1663
+#: common/models.py:1675
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1680
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1670
+#: common/models.py:1682
msgid "Determines default behaviour when a stock item is depleted"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1688
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1678
+#: common/models.py:1690
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1695
msgid "Stock Expiry"
msgstr "库存到期"
-#: common/models.py:1684
+#: common/models.py:1696
msgid "Enable stock expiry functionality"
msgstr "启用库存到期功能"
-#: common/models.py:1689
+#: common/models.py:1701
msgid "Sell Expired Stock"
msgstr "销售过期库存"
-#: common/models.py:1690
+#: common/models.py:1702
msgid "Allow sale of expired stock"
msgstr "允许销售过期库存"
-#: common/models.py:1695
+#: common/models.py:1707
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1697
+#: common/models.py:1709
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1704
+#: common/models.py:1716
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1705
+#: common/models.py:1717
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1710
+#: common/models.py:1722
msgid "Stock Ownership Control"
msgstr "库存所有权控制"
-#: common/models.py:1711
+#: common/models.py:1723
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1716
+#: common/models.py:1728
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1717
+#: common/models.py:1729
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1733
#, fuzzy
#| msgid "Select Stock Items"
msgid "Show Installed Stock Items"
msgstr "选择库存项"
-#: common/models.py:1722
+#: common/models.py:1734
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1739
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1729
+#: common/models.py:1741
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1747
#, fuzzy
#| msgid "Sales Orders"
msgid "Enable Return Orders"
msgstr "销售订单"
-#: common/models.py:1736
+#: common/models.py:1748
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1741
+#: common/models.py:1753
#, fuzzy
#| msgid "Build Order Reference"
msgid "Return Order Reference Pattern"
msgstr "相关生产订单"
-#: common/models.py:1743
+#: common/models.py:1755
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1749
+#: common/models.py:1761
#, fuzzy
#| msgid "Complete Build Order"
msgid "Edit Completed Return Orders"
msgstr "生产订单完成"
-#: common/models.py:1751
+#: common/models.py:1763
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1757
+#: common/models.py:1769
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1771
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1765
+#: common/models.py:1777
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1766
+#: common/models.py:1778
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1771
+#: common/models.py:1783
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1773
+#: common/models.py:1785
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1779
+#: common/models.py:1791
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1793
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1799
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1789
+#: common/models.py:1801
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1795
+#: common/models.py:1807
#, fuzzy
#| msgid "Create Purchase Order"
msgid "Auto Complete Purchase Orders"
msgstr "创建采购订单"
-#: common/models.py:1797
+#: common/models.py:1809
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1804
+#: common/models.py:1816
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1805
+#: common/models.py:1817
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1822
msgid "Enable registration"
msgstr ""
-#: common/models.py:1811
+#: common/models.py:1823
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1816
+#: common/models.py:1828
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1817
+#: common/models.py:1829
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1834
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1824
+#: common/models.py:1836
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1830
+#: common/models.py:1842
msgid "Email required"
msgstr ""
-#: common/models.py:1831
+#: common/models.py:1843
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1848
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1838
+#: common/models.py:1850
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1856
msgid "Mail twice"
msgstr ""
-#: common/models.py:1845
+#: common/models.py:1857
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1862
msgid "Password twice"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1863
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1856
+#: common/models.py:1868
msgid "Allowed domains"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1870
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1876
msgid "Group on signup"
msgstr ""
-#: common/models.py:1865
+#: common/models.py:1877
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1870
+#: common/models.py:1882
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1871
+#: common/models.py:1883
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1876
+#: common/models.py:1888
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1890
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1898
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:1887
+#: common/models.py:1899
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:1893
+#: common/models.py:1905
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1894
+#: common/models.py:1906
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1912
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1913
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1907
+#: common/models.py:1919
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1920
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1926
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1915
+#: common/models.py:1927
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1921
+#: common/models.py:1933
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1934
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1928
+#: common/models.py:1940
#, fuzzy
#| msgid "Sales Orders"
msgid "Enable project codes"
msgstr "销售订单"
-#: common/models.py:1929
+#: common/models.py:1941
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:1934
+#: common/models.py:1946
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1948
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:1942
+#: common/models.py:1954
#, fuzzy
#| msgid "Exclude Location"
msgid "Exclude External Locations"
msgstr "排除地点"
-#: common/models.py:1944
+#: common/models.py:1956
#, fuzzy
#| msgid "Exclude stock items from this selected location"
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr "从该选定的仓储地点排除库存项"
-#: common/models.py:1950
+#: common/models.py:1962
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:1952
+#: common/models.py:1964
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:1958
+#: common/models.py:1970
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:1972
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1967
+#: common/models.py:1979
msgid "Display Users full names"
msgstr ""
-#: common/models.py:1968
+#: common/models.py:1980
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:1980 common/models.py:2380
+#: common/models.py:1992 common/models.py:2392
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:2021
+#: common/models.py:2033
#, fuzzy
#| msgid "Build to allocate parts"
msgid "Hide inactive parts"
msgstr "生产以分配部件"
-#: common/models.py:2023
+#: common/models.py:2035
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2029
+#: common/models.py:2041
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2030
+#: common/models.py:2042
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:2035
+#: common/models.py:2047
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2036
+#: common/models.py:2048
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:2041
+#: common/models.py:2053
msgid "Show latest parts"
msgstr "显示最近商品"
-#: common/models.py:2042
+#: common/models.py:2054
msgid "Show latest parts on the homepage"
msgstr "在主页上显示最近商品"
-#: common/models.py:2047
+#: common/models.py:2059
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:2048
+#: common/models.py:2060
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2065
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2066
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2071
msgid "Show low stock"
msgstr ""
-#: common/models.py:2060
+#: common/models.py:2072
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:2065
+#: common/models.py:2077
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2066
+#: common/models.py:2078
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:2071
+#: common/models.py:2083
msgid "Show needed stock"
msgstr ""
-#: common/models.py:2072
+#: common/models.py:2084
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2089
msgid "Show expired stock"
msgstr ""
-#: common/models.py:2078
+#: common/models.py:2090
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2095
msgid "Show stale stock"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2096
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2101
msgid "Show pending builds"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2102
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:2095
+#: common/models.py:2107
msgid "Show overdue builds"
msgstr "显示逾期生产"
-#: common/models.py:2096
+#: common/models.py:2108
msgid "Show overdue builds on the homepage"
msgstr "在主页上显示逾期的生产"
-#: common/models.py:2101
+#: common/models.py:2113
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2102
+#: common/models.py:2114
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:2107
+#: common/models.py:2119
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2108
+#: common/models.py:2120
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:2113
+#: common/models.py:2125
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2114
+#: common/models.py:2126
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2131
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2120
+#: common/models.py:2132
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2137
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2126
+#: common/models.py:2138
#, fuzzy
#| msgid "Show latest parts on the homepage"
msgid "Show pending SO shipments on the homepage"
msgstr "在主页上显示最近商品"
-#: common/models.py:2131
+#: common/models.py:2143
msgid "Show News"
msgstr ""
-#: common/models.py:2132
+#: common/models.py:2144
msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2137
+#: common/models.py:2149
msgid "Inline label display"
msgstr "内嵌标签显示"
-#: common/models.py:2139
+#: common/models.py:2151
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr "在浏览器中显示 PDF 标签,而不是以文件形式下载"
-#: common/models.py:2145
+#: common/models.py:2157
msgid "Default label printer"
msgstr ""
-#: common/models.py:2147
+#: common/models.py:2159
msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2153
+#: common/models.py:2165
msgid "Inline report display"
msgstr ""
-#: common/models.py:2155
+#: common/models.py:2167
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr "在浏览器中显示 PDF 报告,而不是以文件形式下载"
-#: common/models.py:2161
+#: common/models.py:2173
msgid "Search Parts"
msgstr ""
-#: common/models.py:2162
+#: common/models.py:2174
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2167
+#: common/models.py:2179
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2168
+#: common/models.py:2180
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2173
+#: common/models.py:2185
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2174
+#: common/models.py:2186
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2179
+#: common/models.py:2191
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2180
+#: common/models.py:2192
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:2185
+#: common/models.py:2197
msgid "Search Categories"
msgstr ""
-#: common/models.py:2186
+#: common/models.py:2198
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:2191
+#: common/models.py:2203
msgid "Search Stock"
msgstr ""
-#: common/models.py:2192
+#: common/models.py:2204
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2197
+#: common/models.py:2209
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2199
+#: common/models.py:2211
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:2205
+#: common/models.py:2217
msgid "Search Locations"
msgstr ""
-#: common/models.py:2206
+#: common/models.py:2218
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2211
+#: common/models.py:2223
msgid "Search Companies"
msgstr ""
-#: common/models.py:2212
+#: common/models.py:2224
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2217
+#: common/models.py:2229
msgid "Search Build Orders"
msgstr ""
-#: common/models.py:2218
+#: common/models.py:2230
msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2223
+#: common/models.py:2235
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:2224
+#: common/models.py:2236
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2229
+#: common/models.py:2241
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:2231
+#: common/models.py:2243
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:2237
+#: common/models.py:2249
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2238
+#: common/models.py:2250
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:2243
+#: common/models.py:2255
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:2245
+#: common/models.py:2257
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:2251
+#: common/models.py:2263
#, fuzzy
#| msgid "Purchase Orders"
msgid "Search Return Orders"
msgstr "采购订单"
-#: common/models.py:2252
+#: common/models.py:2264
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2257
+#: common/models.py:2269
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2259
+#: common/models.py:2271
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2265
+#: common/models.py:2277
msgid "Search Preview Results"
msgstr "搜索预览结果"
-#: common/models.py:2267
+#: common/models.py:2279
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2285
#, fuzzy
#| msgid "Search"
msgid "Regex Search"
msgstr "搜索"
-#: common/models.py:2274
+#: common/models.py:2286
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2279
+#: common/models.py:2291
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2280
+#: common/models.py:2292
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2285
+#: common/models.py:2297
msgid "Show Quantity in Forms"
msgstr "在表格中显示数量"
-#: common/models.py:2286
+#: common/models.py:2298
msgid "Display available part quantity in some forms"
msgstr "在某些表格中显示可用的商品数量"
-#: common/models.py:2291
+#: common/models.py:2303
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:2292
+#: common/models.py:2304
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:2297
+#: common/models.py:2309
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:2298
+#: common/models.py:2310
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:2303
+#: common/models.py:2315
msgid "Date Format"
msgstr ""
-#: common/models.py:2304
+#: common/models.py:2316
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2317 part/templates/part/detail.html:41
+#: common/models.py:2329 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2318
+#: common/models.py:2330
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2323 part/templates/part/detail.html:62
+#: common/models.py:2335 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2325
+#: common/models.py:2337
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2331
+#: common/models.py:2343
msgid "Table String Length"
msgstr ""
-#: common/models.py:2333
+#: common/models.py:2345
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2339
+#: common/models.py:2351
#, fuzzy
#| msgid "Select Label Template"
msgid "Default part label template"
msgstr "选择标签模板"
-#: common/models.py:2340
+#: common/models.py:2352
msgid "The part label template to be automatically selected"
msgstr ""
-#: common/models.py:2345
+#: common/models.py:2357
#, fuzzy
#| msgid "stock items selected"
msgid "Default stock item template"
msgstr "已选择库存项"
-#: common/models.py:2347
+#: common/models.py:2359
msgid "The stock item label template to be automatically selected"
msgstr ""
-#: common/models.py:2353
+#: common/models.py:2365
#, fuzzy
#| msgid "No stock location set"
msgid "Default stock location label template"
msgstr "未设置仓储地点"
-#: common/models.py:2355
+#: common/models.py:2367
msgid "The stock location label template to be automatically selected"
msgstr ""
-#: common/models.py:2361
+#: common/models.py:2373
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2362
+#: common/models.py:2374
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2367
+#: common/models.py:2379
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2368
+#: common/models.py:2380
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2423
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2418 company/serializers.py:484 order/admin.py:42
+#: common/models.py:2430 company/serializers.py:484 order/admin.py:42
#: order/models.py:1316 order/models.py:2208
#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
#: templates/js/translated/pricing.js:621
@@ -3613,23 +3613,23 @@ msgstr ""
msgid "Price"
msgstr "价格"
-#: common/models.py:2419
+#: common/models.py:2431
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2590 common/models.py:2775
+#: common/models.py:2602 common/models.py:2787
msgid "Endpoint"
msgstr ""
-#: common/models.py:2591
+#: common/models.py:2603
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2601
+#: common/models.py:2613
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2605 machine/models.py:39 part/admin.py:88
+#: common/models.py:2617 machine/models.py:39 part/admin.py:88
#: part/models.py:1040 plugin/models.py:56
#: templates/js/translated/table_filters.js:135
#: templates/js/translated/table_filters.js:219
@@ -3639,101 +3639,101 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2605
+#: common/models.py:2617
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2621 users/models.py:148
+#: common/models.py:2633 users/models.py:148
msgid "Token"
msgstr "令牌"
-#: common/models.py:2622
+#: common/models.py:2634
msgid "Token for access"
msgstr ""
-#: common/models.py:2630
+#: common/models.py:2642
msgid "Secret"
msgstr ""
-#: common/models.py:2631
+#: common/models.py:2643
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2739
+#: common/models.py:2751
msgid "Message ID"
msgstr ""
-#: common/models.py:2740
+#: common/models.py:2752
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2748
+#: common/models.py:2760
msgid "Host"
msgstr ""
-#: common/models.py:2749
+#: common/models.py:2761
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2757
+#: common/models.py:2769
msgid "Header"
msgstr ""
-#: common/models.py:2758
+#: common/models.py:2770
msgid "Header of this message"
msgstr ""
-#: common/models.py:2765
+#: common/models.py:2777
msgid "Body"
msgstr ""
-#: common/models.py:2766
+#: common/models.py:2778
msgid "Body of this message"
msgstr ""
-#: common/models.py:2776
+#: common/models.py:2788
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2781
+#: common/models.py:2793
msgid "Worked on"
msgstr ""
-#: common/models.py:2782
+#: common/models.py:2794
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2908
+#: common/models.py:2920
msgid "Id"
msgstr ""
-#: common/models.py:2910 templates/js/translated/company.js:955
+#: common/models.py:2922 templates/js/translated/company.js:955
#: templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:2914 templates/js/translated/news.js:60
+#: common/models.py:2926 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:2928 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:2918 templates/js/translated/news.js:52
+#: common/models.py:2930 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2933
msgid "Read"
msgstr ""
-#: common/models.py:2921
+#: common/models.py:2933
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:2938 company/models.py:154 part/models.py:924
+#: common/models.py:2950 company/models.py:154 part/models.py:924
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report_base.html:35
@@ -3743,41 +3743,41 @@ msgstr ""
msgid "Image"
msgstr "图片"
-#: common/models.py:2938
+#: common/models.py:2950
#, fuzzy
#| msgid "Image"
msgid "Image file"
msgstr "图片"
-#: common/models.py:2980
+#: common/models.py:2992
#, fuzzy
#| msgid "Must be a valid number"
msgid "Unit name must be a valid identifier"
msgstr "必须是有效数字"
-#: common/models.py:2999
+#: common/models.py:3011
#, fuzzy
#| msgid "Part name"
msgid "Unit name"
msgstr "商品名称"
-#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3018 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3007
+#: common/models.py:3019
#, fuzzy
#| msgid "Optional Items"
msgid "Optional unit symbol"
msgstr "可选项目"
-#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3026 templates/InvenTree/settings/settings_staff_js.html:71
#, fuzzy
#| msgid "Destination"
msgid "Definition"
msgstr "目的地"
-#: common/models.py:3015
+#: common/models.py:3027
msgid "Unit definition"
msgstr ""
@@ -4004,7 +4004,7 @@ msgstr "该公司使用的默认货币"
#: company/models.py:265 company/models.py:374
#: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:733
+#: company/templates/company/company_base.html:12 stock/api.py:735
#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
msgid "Company"
msgstr "公司"
@@ -4877,62 +4877,62 @@ msgstr "商品二维码"
msgid "QR code"
msgstr ""
-#: machine/machine_types/label_printer.py:213
+#: machine/machine_types/label_printer.py:217
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:214
+#: machine/machine_types/label_printer.py:218
#, fuzzy
#| msgid "Number of stock items to build"
msgid "Number of copies to print for each label"
msgstr "要生产的项目数量"
-#: machine/machine_types/label_printer.py:229
+#: machine/machine_types/label_printer.py:233
#, fuzzy
#| msgid "Connection error"
msgid "Connected"
msgstr "连接错误"
-#: machine/machine_types/label_printer.py:230 order/api.py:1412
+#: machine/machine_types/label_printer.py:234 order/api.py:1412
#: templates/js/translated/sales_order.js:1042
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:235
#, fuzzy
#| msgid "Print Label"
msgid "Printing"
msgstr "打印标签"
-#: machine/machine_types/label_printer.py:232
+#: machine/machine_types/label_printer.py:236
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:237
#, fuzzy
#| msgid "Rejected"
msgid "Disconnected"
msgstr "已拒绝"
-#: machine/machine_types/label_printer.py:240
+#: machine/machine_types/label_printer.py:244
#, fuzzy
#| msgid "Label name"
msgid "Label Printer"
msgstr "标签名称"
-#: machine/machine_types/label_printer.py:241
+#: machine/machine_types/label_printer.py:245
#, fuzzy
#| msgid "Allocate selected items"
msgid "Directly print labels for various items."
msgstr "分配选定项目"
-#: machine/machine_types/label_printer.py:247
+#: machine/machine_types/label_printer.py:251
#, fuzzy
#| msgid "Print actions"
msgid "Printer Location"
msgstr "打印操作"
-#: machine/machine_types/label_printer.py:248
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -6291,7 +6291,7 @@ msgstr "提高搜索结果可见性的关键字"
#: part/models.py:891 part/models.py:3371 part/models.py:3812
#: part/serializers.py:358 part/serializers.py:1046
-#: part/templates/part/part_base.html:260 stock/api.py:705
+#: part/templates/part/part_base.html:260 stock/api.py:707
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2377
@@ -8141,7 +8141,7 @@ msgstr "重命名文件出错"
msgid "Error rendering label to HTML"
msgstr "重命名文件出错"
-#: plugin/base/label/mixins.py:95
+#: plugin/base/label/mixins.py:111
#, fuzzy
#| msgid "Error renaming file"
msgid "Error rendering label to PNG"
@@ -8466,17 +8466,17 @@ msgstr ""
msgid "No author found"
msgstr ""
-#: plugin/registry.py:584
+#: plugin/registry.py:585
#, python-brace-format
msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
-#: plugin/registry.py:587
+#: plugin/registry.py:588
#, python-brace-format
msgid "Plugin requires at least version {v}"
msgstr ""
-#: plugin/registry.py:589
+#: plugin/registry.py:590
#, python-brace-format
msgid "Plugin requires at most version {v}"
msgstr ""
@@ -8933,46 +8933,46 @@ msgstr "删除模板"
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:540 templates/js/translated/table_filters.js:427
+#: stock/api.py:542 templates/js/translated/table_filters.js:427
msgid "External Location"
msgstr ""
-#: stock/api.py:725
+#: stock/api.py:727
#, fuzzy
#| msgid "Part name"
msgid "Part Tree"
msgstr "商品名称"
-#: stock/api.py:753
+#: stock/api.py:755
msgid "Expiry date before"
msgstr ""
-#: stock/api.py:757
+#: stock/api.py:759
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:760 stock/templates/stock/item_base.html:439
+#: stock/api.py:762 stock/templates/stock/item_base.html:439
#: templates/js/translated/table_filters.js:441
msgid "Stale"
msgstr ""
-#: stock/api.py:846
+#: stock/api.py:848
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:852
+#: stock/api.py:854
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:883
+#: stock/api.py:885
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:893
+#: stock/api.py:895
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:924
+#: stock/api.py:926
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -9468,7 +9468,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280
msgid "Delete Test Data"
msgstr ""
@@ -9484,15 +9484,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3242
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:267
+#: stock/templates/stock/item.html:268
msgid "Delete all test results for this stock item"
msgstr ""
-#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1667
msgid "Add Test Result"
msgstr ""
@@ -10316,7 +10316,7 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105
+#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
#: templates/js/translated/stock.js:245 users/models.py:411
msgid "Delete"
@@ -10455,7 +10455,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543
+#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
#: templates/navbar.html:107 templates/search.html:8
#: templates/search_form.html:6 templates/search_form.html:7
msgid "Search"
@@ -10811,7 +10811,7 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
-#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770
+#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
msgid "Confirm"
msgstr "确认"
@@ -11809,7 +11809,7 @@ msgid "No builds matching query"
msgstr ""
#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478
-#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167
+#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681
msgid "Select"
@@ -12234,61 +12234,61 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389
-#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417
+#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:376
+#: templates/js/translated/forms.js:380
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:391
+#: templates/js/translated/forms.js:395
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:405
+#: templates/js/translated/forms.js:409
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:419
+#: templates/js/translated/forms.js:423
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:796
+#: templates/js/translated/forms.js:800
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:899
+#: templates/js/translated/forms.js:903
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1469 templates/modals.html:19
+#: templates/js/translated/forms.js:1473 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1967
+#: templates/js/translated/forms.js:1971
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239
+#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2485
+#: templates/js/translated/forms.js:2489
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:3071
+#: templates/js/translated/forms.js:3075
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:3083
+#: templates/js/translated/forms.js:3087
msgid "Select Columns"
msgstr ""
@@ -13719,7 +13719,7 @@ msgstr ""
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3270
msgid "Select Stock Items"
msgstr "选择库存项"
@@ -13962,55 +13962,55 @@ msgstr ""
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143
+#: templates/js/translated/stock.js:3110 templates/js/translated/stock.js:3146
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3165
+#: templates/js/translated/stock.js:3168
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3189
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3190
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3189
+#: templates/js/translated/stock.js:3192
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3190
+#: templates/js/translated/stock.js:3193
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3191
+#: templates/js/translated/stock.js:3194
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3192
+#: templates/js/translated/stock.js:3195
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3205
+#: templates/js/translated/stock.js:3208
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3268
+#: templates/js/translated/stock.js:3271
#, fuzzy
#| msgid "Select Stock Items"
msgid "Select one or more stock items"
msgstr "选择库存项"
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3284
#, fuzzy
#| msgid "Select Stock Items"
msgid "Selected stock items"
msgstr "选择库存项"
-#: templates/js/translated/stock.js:3285
+#: templates/js/translated/stock.js:3288
#, fuzzy
#| msgid "Stock Settings"
msgid "Change Stock Status"
diff --git a/src/frontend/src/locales/bg/messages.po b/src/frontend/src/locales/bg/messages.po
index c3efbd04cc7e..e1fc990b05c3 100644
--- a/src/frontend/src/locales/bg/messages.po
+++ b/src/frontend/src/locales/bg/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: bg\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Bulgarian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -53,8 +53,8 @@ msgstr ""
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
@@ -274,26 +274,26 @@ msgstr ""
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
msgstr ""
@@ -308,7 +308,7 @@ msgstr ""
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
msgstr ""
@@ -316,8 +316,8 @@ msgstr ""
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
msgstr ""
@@ -398,7 +398,7 @@ msgid "Delete item"
msgstr ""
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
msgstr ""
@@ -416,7 +416,7 @@ msgid "Read More"
msgstr ""
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
msgstr ""
@@ -458,11 +458,19 @@ msgid "Scan QR code"
msgstr ""
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
msgstr ""
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
msgstr ""
@@ -702,7 +710,7 @@ msgstr ""
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr ""
@@ -766,8 +774,8 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
msgstr ""
@@ -777,17 +785,17 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
msgstr ""
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
msgstr ""
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
@@ -826,12 +834,12 @@ msgid "No results available for search query"
msgstr ""
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
msgstr ""
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
msgstr ""
@@ -861,88 +869,96 @@ msgid "Part Parameter Templates"
msgstr ""
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
msgstr ""
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
msgstr ""
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
msgstr ""
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
msgstr ""
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
msgstr ""
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
msgstr ""
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
msgstr ""
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
msgstr ""
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
msgstr ""
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
msgstr ""
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
msgstr ""
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
msgstr ""
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
msgstr ""
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
msgstr ""
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
msgstr ""
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
@@ -950,79 +966,79 @@ msgstr ""
msgid "Purchase Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
msgstr ""
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
msgstr ""
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
msgstr ""
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
msgstr ""
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
msgstr ""
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
msgstr ""
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
msgstr ""
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
msgstr ""
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
msgstr ""
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
msgstr ""
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
msgstr ""
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
msgstr ""
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
msgstr ""
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
@@ -1038,8 +1054,8 @@ msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
msgstr ""
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -2435,7 +2442,7 @@ msgid "Actions for {0}"
msgstr ""
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
msgstr ""
@@ -2496,7 +2503,7 @@ msgid "The history is kept in this browser's local storage. So it won't be share
msgstr ""
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
msgstr ""
@@ -2828,7 +2835,7 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
msgstr ""
@@ -2872,7 +2879,11 @@ msgstr ""
msgid "Go to the start page"
msgstr ""
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
+
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
msgstr ""
@@ -2916,7 +2927,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
msgstr ""
@@ -2926,7 +2937,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
msgstr ""
@@ -2999,7 +3010,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
msgstr ""
@@ -3095,7 +3106,7 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
msgstr ""
@@ -3129,7 +3140,7 @@ msgid "Building"
msgstr ""
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
msgstr ""
@@ -3198,7 +3209,7 @@ msgid "Variants"
msgstr ""
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
msgstr ""
@@ -3290,19 +3301,19 @@ msgstr ""
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
msgstr ""
@@ -3314,56 +3325,67 @@ msgstr ""
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr ""
-
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr ""
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
msgstr ""
@@ -3469,101 +3491,102 @@ msgstr ""
msgid "Remove filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
msgstr ""
@@ -3596,7 +3619,7 @@ msgstr ""
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
msgstr ""
@@ -3694,7 +3717,7 @@ msgstr ""
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
msgstr ""
@@ -3718,8 +3741,8 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
msgstr ""
@@ -3748,7 +3771,7 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
msgstr ""
@@ -3924,7 +3947,7 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
msgstr ""
@@ -4016,11 +4039,11 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
msgstr ""
@@ -4054,26 +4077,26 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
msgstr ""
@@ -4139,7 +4162,7 @@ msgid "Filter by part active status"
msgstr ""
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
msgstr ""
@@ -4211,31 +4234,63 @@ msgstr ""
msgid "Not Virtual"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
@@ -4306,10 +4361,6 @@ msgstr ""
msgid "Author"
msgstr ""
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr ""
-
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
msgstr ""
@@ -4479,7 +4530,7 @@ msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
msgstr ""
@@ -4869,155 +4920,243 @@ msgstr ""
msgid "Edit user"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
msgstr ""
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
+
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
msgstr ""
diff --git a/src/frontend/src/locales/cs/messages.po b/src/frontend/src/locales/cs/messages.po
index 09f6cb3efdc4..8a4397bdbf3e 100644
--- a/src/frontend/src/locales/cs/messages.po
+++ b/src/frontend/src/locales/cs/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: cs\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
@@ -53,8 +53,8 @@ msgstr ""
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
@@ -274,26 +274,26 @@ msgstr ""
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
msgstr ""
@@ -308,7 +308,7 @@ msgstr ""
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
msgstr ""
@@ -316,8 +316,8 @@ msgstr ""
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
msgstr ""
@@ -398,7 +398,7 @@ msgid "Delete item"
msgstr ""
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
msgstr ""
@@ -416,7 +416,7 @@ msgid "Read More"
msgstr ""
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
msgstr ""
@@ -458,11 +458,19 @@ msgid "Scan QR code"
msgstr ""
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
msgstr ""
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
msgstr ""
@@ -702,7 +710,7 @@ msgstr ""
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr ""
@@ -766,8 +774,8 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
msgstr ""
@@ -777,17 +785,17 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
msgstr ""
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
msgstr ""
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
@@ -826,12 +834,12 @@ msgid "No results available for search query"
msgstr ""
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
msgstr ""
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
msgstr ""
@@ -861,88 +869,96 @@ msgid "Part Parameter Templates"
msgstr ""
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
msgstr ""
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
msgstr ""
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
msgstr ""
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
msgstr ""
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
msgstr ""
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
msgstr ""
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
msgstr ""
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
msgstr ""
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
msgstr ""
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
msgstr ""
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
msgstr ""
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
msgstr ""
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
msgstr ""
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
msgstr ""
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
msgstr ""
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
@@ -950,79 +966,79 @@ msgstr ""
msgid "Purchase Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
msgstr ""
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
msgstr ""
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
msgstr ""
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
msgstr ""
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
msgstr ""
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
msgstr ""
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
msgstr ""
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
msgstr ""
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
msgstr ""
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
msgstr ""
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
msgstr ""
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
msgstr ""
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
msgstr ""
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
@@ -1038,8 +1054,8 @@ msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
msgstr ""
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -2435,7 +2442,7 @@ msgid "Actions for {0}"
msgstr ""
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
msgstr ""
@@ -2496,7 +2503,7 @@ msgid "The history is kept in this browser's local storage. So it won't be share
msgstr ""
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
msgstr ""
@@ -2828,7 +2835,7 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
msgstr ""
@@ -2872,7 +2879,11 @@ msgstr ""
msgid "Go to the start page"
msgstr ""
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
+
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
msgstr ""
@@ -2916,7 +2927,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
msgstr ""
@@ -2926,7 +2937,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
msgstr ""
@@ -2999,7 +3010,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
msgstr ""
@@ -3095,7 +3106,7 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
msgstr ""
@@ -3129,7 +3140,7 @@ msgid "Building"
msgstr ""
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
msgstr ""
@@ -3198,7 +3209,7 @@ msgid "Variants"
msgstr ""
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
msgstr ""
@@ -3290,19 +3301,19 @@ msgstr ""
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
msgstr ""
@@ -3314,56 +3325,67 @@ msgstr ""
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr ""
-
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr ""
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
msgstr ""
@@ -3469,101 +3491,102 @@ msgstr ""
msgid "Remove filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
msgstr ""
@@ -3596,7 +3619,7 @@ msgstr ""
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
msgstr ""
@@ -3694,7 +3717,7 @@ msgstr ""
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
msgstr ""
@@ -3718,8 +3741,8 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
msgstr ""
@@ -3748,7 +3771,7 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
msgstr ""
@@ -3924,7 +3947,7 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
msgstr ""
@@ -4016,11 +4039,11 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
msgstr ""
@@ -4054,26 +4077,26 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
msgstr ""
@@ -4139,7 +4162,7 @@ msgid "Filter by part active status"
msgstr ""
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
msgstr ""
@@ -4211,31 +4234,63 @@ msgstr ""
msgid "Not Virtual"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
@@ -4306,10 +4361,6 @@ msgstr ""
msgid "Author"
msgstr ""
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr ""
-
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
msgstr ""
@@ -4479,7 +4530,7 @@ msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
msgstr ""
@@ -4869,155 +4920,243 @@ msgstr ""
msgid "Edit user"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
msgstr ""
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
+
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
msgstr ""
diff --git a/src/frontend/src/locales/da/messages.po b/src/frontend/src/locales/da/messages.po
index 80a652f27dba..4d15eba615a6 100644
--- a/src/frontend/src/locales/da/messages.po
+++ b/src/frontend/src/locales/da/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: da\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Danish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -53,8 +53,8 @@ msgstr ""
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
@@ -274,26 +274,26 @@ msgstr ""
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
msgstr ""
@@ -308,7 +308,7 @@ msgstr ""
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
msgstr ""
@@ -316,8 +316,8 @@ msgstr ""
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
msgstr ""
@@ -398,7 +398,7 @@ msgid "Delete item"
msgstr ""
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
msgstr ""
@@ -416,7 +416,7 @@ msgid "Read More"
msgstr ""
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
msgstr ""
@@ -458,11 +458,19 @@ msgid "Scan QR code"
msgstr ""
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
msgstr ""
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
msgstr ""
@@ -702,7 +710,7 @@ msgstr ""
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr ""
@@ -766,8 +774,8 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
msgstr ""
@@ -777,17 +785,17 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
msgstr ""
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
msgstr ""
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
@@ -826,12 +834,12 @@ msgid "No results available for search query"
msgstr ""
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
msgstr ""
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
msgstr ""
@@ -861,88 +869,96 @@ msgid "Part Parameter Templates"
msgstr ""
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
msgstr ""
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
msgstr ""
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
msgstr ""
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
msgstr ""
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
msgstr ""
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
msgstr ""
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
msgstr ""
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
msgstr ""
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
msgstr ""
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
msgstr ""
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
msgstr ""
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
msgstr ""
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
msgstr ""
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
msgstr ""
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
msgstr ""
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
@@ -950,79 +966,79 @@ msgstr ""
msgid "Purchase Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
msgstr ""
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
msgstr ""
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
msgstr ""
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
msgstr ""
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
msgstr ""
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
msgstr ""
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
msgstr ""
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
msgstr ""
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
msgstr ""
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
msgstr ""
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
msgstr ""
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
msgstr ""
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
msgstr ""
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
@@ -1038,8 +1054,8 @@ msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
msgstr ""
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -2435,7 +2442,7 @@ msgid "Actions for {0}"
msgstr ""
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
msgstr ""
@@ -2496,7 +2503,7 @@ msgid "The history is kept in this browser's local storage. So it won't be share
msgstr ""
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
msgstr ""
@@ -2828,7 +2835,7 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
msgstr ""
@@ -2872,7 +2879,11 @@ msgstr ""
msgid "Go to the start page"
msgstr ""
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
+
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
msgstr ""
@@ -2916,7 +2927,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
msgstr ""
@@ -2926,7 +2937,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
msgstr ""
@@ -2999,7 +3010,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
msgstr ""
@@ -3095,7 +3106,7 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
msgstr ""
@@ -3129,7 +3140,7 @@ msgid "Building"
msgstr ""
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
msgstr ""
@@ -3198,7 +3209,7 @@ msgid "Variants"
msgstr ""
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
msgstr ""
@@ -3290,19 +3301,19 @@ msgstr ""
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
msgstr ""
@@ -3314,56 +3325,67 @@ msgstr ""
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr ""
-
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr ""
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
msgstr ""
@@ -3469,101 +3491,102 @@ msgstr ""
msgid "Remove filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
msgstr ""
@@ -3596,7 +3619,7 @@ msgstr ""
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
msgstr ""
@@ -3694,7 +3717,7 @@ msgstr ""
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
msgstr ""
@@ -3718,8 +3741,8 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
msgstr ""
@@ -3748,7 +3771,7 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
msgstr ""
@@ -3924,7 +3947,7 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
msgstr ""
@@ -4016,11 +4039,11 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
msgstr ""
@@ -4054,26 +4077,26 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
msgstr ""
@@ -4139,7 +4162,7 @@ msgid "Filter by part active status"
msgstr ""
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
msgstr ""
@@ -4211,31 +4234,63 @@ msgstr ""
msgid "Not Virtual"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
@@ -4306,10 +4361,6 @@ msgstr ""
msgid "Author"
msgstr ""
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr ""
-
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
msgstr ""
@@ -4479,7 +4530,7 @@ msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
msgstr ""
@@ -4869,155 +4920,243 @@ msgstr ""
msgid "Edit user"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
msgstr ""
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
+
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
msgstr ""
diff --git a/src/frontend/src/locales/de/messages.po b/src/frontend/src/locales/de/messages.po
index e86ddf394b52..7f7e60da4b00 100644
--- a/src/frontend/src/locales/de/messages.po
+++ b/src/frontend/src/locales/de/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: de\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -53,8 +53,8 @@ msgstr "Aktualisieren"
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
@@ -110,7 +110,7 @@ msgstr "Eingabefehler"
#: src/components/forms/AuthenticationForm.tsx:98
msgid "Or continue with other methods"
-msgstr ""
+msgstr "Oder mit anderen Methoden fortfahren"
#: src/components/forms/AuthenticationForm.tsx:109
#: src/components/forms/AuthenticationForm.tsx:233
@@ -165,7 +165,7 @@ msgstr "Mail erhalten"
#: src/components/forms/AuthenticationForm.tsx:156
msgid "Use username and password"
-msgstr ""
+msgstr "Benutzername und Passwort benutzen"
#: src/components/forms/AuthenticationForm.tsx:165
msgid "Log In"
@@ -177,40 +177,40 @@ msgstr "E-Mail senden"
#: src/components/forms/AuthenticationForm.tsx:196
msgid "Registration successful"
-msgstr ""
+msgstr "Registrierung erfolgreich"
#: src/components/forms/AuthenticationForm.tsx:197
msgid "Please confirm your email address to complete the registration"
-msgstr ""
+msgstr "Bitte bestätigen Sie Ihre E-Mail-Adresse um die Registrierung abzuschließen"
#: src/components/forms/AuthenticationForm.tsx:240
msgid "This will be used for a confirmation"
-msgstr ""
+msgstr "Dies wird zur Bestätigung verwendet"
#: src/components/forms/AuthenticationForm.tsx:252
msgid "Password repeat"
-msgstr ""
+msgstr "Passwort wiederholen"
#: src/components/forms/AuthenticationForm.tsx:253
msgid "Repeat password"
-msgstr ""
+msgstr "Passwort erneut eingeben"
#: src/components/forms/AuthenticationForm.tsx:265
#: src/components/forms/AuthenticationForm.tsx:310
msgid "Register"
-msgstr ""
+msgstr "Registrieren"
#: src/components/forms/AuthenticationForm.tsx:271
msgid "Or use SSO"
-msgstr ""
+msgstr "Oder SSO verwenden"
#: src/components/forms/AuthenticationForm.tsx:302
msgid "Don't have an account?"
-msgstr ""
+msgstr "Nicht registriert?"
#: src/components/forms/AuthenticationForm.tsx:321
msgid "Go back to login"
-msgstr ""
+msgstr "Zurück zur Anmeldung"
#: src/components/forms/HostOptionsForm.tsx:36
#: src/components/forms/HostOptionsForm.tsx:66
@@ -274,41 +274,41 @@ msgstr "Status: <0>worker0> ({0}), <1>Plugins1>{1}"
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
msgstr "Fehler"
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
msgstr "Suche"
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
msgstr "Wird geladen"
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
msgstr "Keine Ergebnisse gefunden"
#: src/components/images/DetailsImage.tsx:61
msgid "Remove Image"
-msgstr ""
+msgstr "Bild entfernen"
#: src/components/images/DetailsImage.tsx:64
msgid "Remove the associated image from this item?"
-msgstr ""
+msgstr "Verknüpftes Bild von diesem Teil entfernen?"
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
msgstr "Entfernen"
@@ -316,43 +316,43 @@ msgstr "Entfernen"
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
msgstr "Abbrechen"
#: src/components/images/DetailsImage.tsx:95
msgid "Drag and drop to upload"
-msgstr ""
+msgstr "Ziehen und Ablegen zum Hochladen"
#: src/components/images/DetailsImage.tsx:98
msgid "Click to select file(s)"
-msgstr ""
+msgstr "Klicken, um Datei(en) auszuwählen"
#: src/components/images/DetailsImage.tsx:220
msgid "Clear"
-msgstr ""
+msgstr "Leeren"
#: src/components/images/DetailsImage.tsx:252
msgid "Select image"
-msgstr ""
+msgstr "Bild auswählen"
#: src/components/images/DetailsImage.tsx:263
msgid "Select from existing images"
-msgstr ""
+msgstr "Aus vorhandenen Bildern auswählen"
#: src/components/images/DetailsImage.tsx:273
msgid "Upload new image"
-msgstr ""
+msgstr "Neues Bild hochladen"
#: src/components/images/DetailsImage.tsx:279
msgid "Upload Image"
-msgstr ""
+msgstr "Bild hochladen"
#: src/components/images/DetailsImage.tsx:292
msgid "Delete image"
-msgstr ""
+msgstr "Bild löschen"
#: src/components/images/Thumbnail.tsx:14
#: src/components/images/Thumbnail.tsx:51
@@ -398,7 +398,7 @@ msgid "Delete item"
msgstr "Element löschen"
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
msgstr "Duplizieren"
@@ -416,7 +416,7 @@ msgid "Read More"
msgstr "Mehr lesen"
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
msgstr "Unbekannter Fehler"
@@ -458,11 +458,19 @@ msgid "Scan QR code"
msgstr "QR-Code scannen"
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
msgstr "Ja"
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
msgstr "Nein"
@@ -534,7 +542,7 @@ msgstr "Mitwirkende"
#: src/components/modals/AboutInvenTreeModal.tsx:171
msgid "Mobile App"
-msgstr ""
+msgstr "Mobile App"
#: src/components/modals/AboutInvenTreeModal.tsx:172
msgid "Submit Bug Report"
@@ -547,7 +555,7 @@ msgstr "Versionsinformationen kopieren"
#: src/components/modals/AboutInvenTreeModal.tsx:192
#: src/components/modals/ServerInfoModal.tsx:147
msgid "Dismiss"
-msgstr ""
+msgstr "Verwerfen"
#: src/components/modals/QrCodeModal.tsx:72
msgid "Unknown response"
@@ -702,7 +710,7 @@ msgstr "Benutzereinstellungen"
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr "Einstellungen"
@@ -766,8 +774,8 @@ msgstr "Über uns"
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
msgstr "Benachrichtigungen"
@@ -777,17 +785,17 @@ msgstr "Du hast keine ungelesenen Benachrichtigungen. "
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
msgstr "Benachrichtigung"
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
msgstr "Als gelesen markieren"
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
@@ -826,12 +834,12 @@ msgid "No results available for search query"
msgstr "Keine Ergebnisse für Suchanfrage verfügbar"
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
msgstr "Lagerorte"
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
msgstr "Unbekanntes Modell: {model}"
@@ -861,88 +869,96 @@ msgid "Part Parameter Templates"
msgstr "Teil Parametervorlagen"
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
msgstr "Zuliefererteil"
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
msgstr "Zuliefererteile"
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
msgstr "Herstellerteil"
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
msgstr "Herstellerteile"
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
msgstr "Teilkategorie"
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
msgstr "Lagerartikel"
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
msgstr "Lagerartikel"
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
msgstr "Lagerort"
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
msgstr "Lagerhistorie"
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
msgstr "Bestandshistorie"
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
msgstr "Version"
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
msgstr "Builds"
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
msgstr "Firma"
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
msgstr "Unternehmen"
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
msgstr "Projekt-Code"
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
msgstr "Projektnummern"
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
msgstr "Einkaufsbestellung"
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
@@ -950,79 +966,79 @@ msgstr "Einkaufsbestellung"
msgid "Purchase Orders"
msgstr "Nachbestellungen"
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
msgstr "Bestellposition"
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
msgstr "Bestellpositionen"
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
msgstr "Verkaufsauftrag"
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
msgstr "Verkaufsaufträge"
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
-msgstr ""
+msgstr "Versand der Bestellung"
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
-msgstr ""
+msgstr "Versand der Bestellungen"
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
msgstr "Rückgabe Auftrag"
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
msgstr "Reklamationen"
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
msgstr "Adresse"
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
msgstr "Adressen"
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
msgstr "Kontakt"
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
msgstr "Kontakte"
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
msgstr "Eigentümer"
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
msgstr "Eigentümer"
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
msgstr "Nutzer"
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
@@ -1038,8 +1054,8 @@ msgstr "Sendung"
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
msgstr "Lager"
@@ -1062,11 +1078,11 @@ msgstr "Einstellung aktualisiert"
#: src/components/settings/SettingItem.tsx:46
#: src/components/settings/SettingItem.tsx:99
msgid "{0} updated successfully"
-msgstr ""
+msgstr "{0} erfolgreich aktualisiert"
#: src/components/settings/SettingItem.tsx:54
msgid "Error editing setting"
-msgstr ""
+msgstr "Fehler beim Bearbeiten der Einstellung"
#: src/components/settings/SettingItem.tsx:91
msgid "Edit Setting"
@@ -1074,7 +1090,7 @@ msgstr "Einstellungen bearbeiten"
#: src/components/settings/SettingList.tsx:63
msgid "No settings specified"
-msgstr ""
+msgstr "Keine Einstellungen angegeben"
#: src/components/tables/ColumnRenderers.tsx:134
#~ msgid "Shipment Date"
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -1556,11 +1563,11 @@ msgstr "Sprache"
#: src/components/widgets/FeedbackWidget.tsx:18
msgid "Something is new: Platform UI"
-msgstr ""
+msgstr "Etwas ist neu: Plattform-UI"
#: src/components/widgets/FeedbackWidget.tsx:20
msgid "We are building a new UI with a modern stack. What you currently see is not fixed and will be redesigned but demonstrates the UI/UX possibilities we will have going forward."
-msgstr ""
+msgstr "Wir bauen eine neue Oberfläche mit einem modernen Stapel. Was Sie derzeit sehen, ist nicht repariert und wird neu gestaltet, aber es zeigt die UI/UX-Möglichkeiten auf, die wir weiter verfolgen werden."
#: src/components/widgets/FeedbackWidget.tsx:31
msgid "Provide Feedback"
@@ -1572,19 +1579,19 @@ msgstr "Erste Schritte"
#: src/components/widgets/MarkdownEditor.tsx:109
msgid "Failed to upload image"
-msgstr ""
+msgstr "Fehler beim Hochladen des Bildes"
#: src/components/widgets/MarkdownEditor.tsx:147
msgid "Notes saved"
-msgstr ""
+msgstr "Notizen gespeichert"
#: src/components/widgets/MarkdownEditor.tsx:155
msgid "Failed to save notes"
-msgstr ""
+msgstr "Notiz konnte nicht gespeichert werden"
#: src/components/widgets/WidgetLayout.tsx:180
msgid "Layout"
-msgstr ""
+msgstr "Darstellung"
#: src/components/widgets/WidgetLayout.tsx:186
msgid "Reset Layout"
@@ -1592,7 +1599,7 @@ msgstr "Layout zurücksetzen"
#: src/components/widgets/WidgetLayout.tsx:199
msgid "Stop Edit"
-msgstr ""
+msgstr "Bearbeiten beenden"
#: src/components/widgets/WidgetLayout.tsx:199
msgid "Edit Layout"
@@ -1604,7 +1611,7 @@ msgstr "Aussehen"
#: src/components/widgets/WidgetLayout.tsx:217
msgid "Show Boxes"
-msgstr ""
+msgstr "Boxen anzeigen"
#: src/contexts/LanguageContext.tsx:18
msgid "Bulgarian"
@@ -1636,11 +1643,11 @@ msgstr "Spanisch"
#: src/contexts/LanguageContext.tsx:25
msgid "Spanish (Mexican)"
-msgstr ""
+msgstr "Spanisch (Mexikanisch)"
#: src/contexts/LanguageContext.tsx:26
msgid "Farsi / Persian"
-msgstr ""
+msgstr "Farsi / Persisch"
#: src/contexts/LanguageContext.tsx:27
msgid "Finnish"
@@ -1692,7 +1699,7 @@ msgstr "Portugiesisch"
#: src/contexts/LanguageContext.tsx:39
msgid "Portuguese (Brazilian)"
-msgstr ""
+msgstr "Portugiesisch (Brasilien)"
#: src/contexts/LanguageContext.tsx:40
msgid "Russian"
@@ -1700,7 +1707,7 @@ msgstr "Russisch"
#: src/contexts/LanguageContext.tsx:41
msgid "Slovak"
-msgstr ""
+msgstr "Slowakisch"
#: src/contexts/LanguageContext.tsx:42
msgid "Slovenian"
@@ -1732,19 +1739,19 @@ msgstr "Chinesisch (Traditionell)"
#: src/defaults/dashboardItems.tsx:15
msgid "Subscribed Parts"
-msgstr ""
+msgstr "Abonnierte Teile"
#: src/defaults/dashboardItems.tsx:22
msgid "Subscribed Categories"
-msgstr ""
+msgstr "Abonnierte Kategorien"
#: src/defaults/dashboardItems.tsx:29
msgid "Latest Parts"
-msgstr ""
+msgstr "Neueste Teile"
#: src/defaults/dashboardItems.tsx:36
msgid "BOM Waiting Validation"
-msgstr ""
+msgstr "Stückliste Wartende Validierung"
#: src/defaults/dashboardItems.tsx:43
msgid "Recently Updated"
@@ -1757,27 +1764,27 @@ msgstr "Geringer Bestand"
#: src/defaults/dashboardItems.tsx:57
msgid "Depleted Stock"
-msgstr ""
+msgstr "Verbrauchter Bestand"
#: src/defaults/dashboardItems.tsx:64
msgid "Required for Build Orders"
-msgstr ""
+msgstr "Für Bauaufträge benötigt"
#: src/defaults/dashboardItems.tsx:71
msgid "Expired Stock"
-msgstr ""
+msgstr "Abgelaufener Bestand"
#: src/defaults/dashboardItems.tsx:78
msgid "Stale Stock"
-msgstr ""
+msgstr "Bestand überfällig"
#: src/defaults/dashboardItems.tsx:85
msgid "Build Orders In Progress"
-msgstr ""
+msgstr "Bauaufträge in Arbeit"
#: src/defaults/dashboardItems.tsx:92
msgid "Overdue Build Orders"
-msgstr ""
+msgstr "Überfällige Bauaufträge"
#: src/defaults/dashboardItems.tsx:99
msgid "Outstanding Purchase Orders"
@@ -2435,7 +2442,7 @@ msgid "Actions for {0}"
msgstr ""
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
msgstr "Anzahl"
@@ -2496,7 +2503,7 @@ msgid "The history is kept in this browser's local storage. So it won't be share
msgstr ""
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
msgstr "Verlauf"
@@ -2828,7 +2835,7 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
msgstr ""
@@ -2872,7 +2879,11 @@ msgstr "Diese Seite ist nicht bekannt oder wurde verschoben."
msgid "Go to the start page"
msgstr "Zur Startseite"
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
+
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
msgstr "Als ungelesen markieren"
@@ -2916,7 +2927,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
msgstr "Anhänge"
@@ -2926,7 +2937,7 @@ msgstr "Anhänge"
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
msgstr "Notizen"
@@ -2999,7 +3010,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
msgstr ""
@@ -3095,7 +3106,7 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
msgstr "Auf Lager"
@@ -3129,7 +3140,7 @@ msgid "Building"
msgstr "Gebäude"
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
msgstr "Kategorie"
@@ -3198,7 +3209,7 @@ msgid "Variants"
msgstr "Varianten"
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
msgstr "Ferienguthaben/Freitage"
@@ -3290,19 +3301,19 @@ msgstr "Abgeschlossene Sendungen"
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
msgstr "Bestandsverfolgung"
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
msgstr "Test Daten"
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
msgstr "Installierte Elemente"
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
msgstr "Untergeordnete Objekte"
@@ -3314,56 +3325,67 @@ msgstr "Untergeordnete Objekte"
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
msgstr "Lagervorgänge"
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
msgstr "Bestand zählen"
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
msgstr "Hinzufügen"
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
msgstr "Lagerbestand hinzufügen"
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
msgstr "Lagerbestand entfernen"
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
msgstr "Lagerbestand verschieben"
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr "Lagerartikel duplizieren"
-
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr "Lagerartikel duplizieren"
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr "Datum"
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
msgstr "Zieldatum"
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
msgstr "Währung"
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
msgstr "Gesamtpreis"
@@ -3469,101 +3491,102 @@ msgstr "Überfällige Aufträge anzeigen"
msgid "Remove filter"
msgstr "Filter entfernen"
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
msgstr "Filter auswählen"
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
msgstr "Filter"
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
msgstr "Wert"
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
msgstr "Filter hinzufügen"
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
msgstr "Filter zurücksetzen"
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
msgstr "Keine Einträge gefunden"
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
msgstr "Der Server hat einen falschen Datentyp zurückgegeben"
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
msgstr "Ungültige Anfrage"
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
msgstr "Nicht autorisiert"
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
msgstr "Verweigert"
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
msgstr "Nicht gefunden"
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
msgstr "Barcode-Aktionen"
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
msgstr "Druck-Aktionen"
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
msgstr "Daten aktualisieren"
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
msgstr "Tabellenfilter"
@@ -3596,7 +3619,7 @@ msgstr ""
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
msgstr ""
@@ -3694,7 +3717,7 @@ msgstr ""
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
msgstr "Aktiv"
@@ -3718,8 +3741,8 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
msgstr "Verfügbar"
@@ -3748,7 +3771,7 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
msgstr ""
@@ -3924,7 +3947,7 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
msgstr "Status"
@@ -4016,11 +4039,11 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
msgstr "Alter"
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
msgstr ""
@@ -4054,26 +4077,26 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
msgstr ""
@@ -4139,7 +4162,7 @@ msgid "Filter by part active status"
msgstr ""
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
msgstr "Montage"
@@ -4211,31 +4234,63 @@ msgstr ""
msgid "Not Virtual"
msgstr "Nicht virtuell"
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
@@ -4306,10 +4361,6 @@ msgstr "Plugin-Informationen"
msgid "Author"
msgstr "Autor"
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr "Datum"
-
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
msgstr ""
@@ -4479,7 +4530,7 @@ msgid "Sample"
msgstr "Beispiel"
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
msgstr "Installiert"
@@ -4869,155 +4920,243 @@ msgstr ""
msgid "Edit user"
msgstr "Benutzer bearbeiten"
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
msgstr "Nach Lagerstatus filtern"
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
msgstr "Zugewiesen"
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
msgstr "Erschöpft"
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
msgstr "Nachverfolgbare Freigabe"
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
msgstr ""
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
+
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
msgstr ""
diff --git a/src/frontend/src/locales/el/messages.po b/src/frontend/src/locales/el/messages.po
index ae0252964234..73a5ea384344 100644
--- a/src/frontend/src/locales/el/messages.po
+++ b/src/frontend/src/locales/el/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: el\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -53,8 +53,8 @@ msgstr ""
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
@@ -274,26 +274,26 @@ msgstr ""
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
msgstr ""
@@ -308,7 +308,7 @@ msgstr ""
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
msgstr ""
@@ -316,8 +316,8 @@ msgstr ""
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
msgstr ""
@@ -398,7 +398,7 @@ msgid "Delete item"
msgstr ""
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
msgstr ""
@@ -416,7 +416,7 @@ msgid "Read More"
msgstr ""
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
msgstr ""
@@ -458,11 +458,19 @@ msgid "Scan QR code"
msgstr ""
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
msgstr ""
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
msgstr ""
@@ -702,7 +710,7 @@ msgstr ""
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr ""
@@ -766,8 +774,8 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
msgstr ""
@@ -777,17 +785,17 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
msgstr ""
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
msgstr ""
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
@@ -826,12 +834,12 @@ msgid "No results available for search query"
msgstr ""
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
msgstr ""
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
msgstr ""
@@ -861,88 +869,96 @@ msgid "Part Parameter Templates"
msgstr ""
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
msgstr ""
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
msgstr ""
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
msgstr ""
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
msgstr ""
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
msgstr ""
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
msgstr ""
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
msgstr ""
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
msgstr ""
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
msgstr ""
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
msgstr ""
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
msgstr ""
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
msgstr ""
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
msgstr ""
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
msgstr ""
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
msgstr ""
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
@@ -950,79 +966,79 @@ msgstr ""
msgid "Purchase Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
msgstr ""
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
msgstr ""
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
msgstr ""
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
msgstr ""
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
msgstr ""
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
msgstr ""
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
msgstr ""
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
msgstr ""
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
msgstr ""
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
msgstr ""
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
msgstr ""
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
msgstr ""
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
msgstr ""
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
@@ -1038,8 +1054,8 @@ msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
msgstr ""
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -2435,7 +2442,7 @@ msgid "Actions for {0}"
msgstr ""
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
msgstr ""
@@ -2496,7 +2503,7 @@ msgid "The history is kept in this browser's local storage. So it won't be share
msgstr ""
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
msgstr ""
@@ -2828,7 +2835,7 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
msgstr ""
@@ -2872,7 +2879,11 @@ msgstr ""
msgid "Go to the start page"
msgstr ""
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
+
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
msgstr ""
@@ -2916,7 +2927,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
msgstr ""
@@ -2926,7 +2937,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
msgstr ""
@@ -2999,7 +3010,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
msgstr ""
@@ -3095,7 +3106,7 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
msgstr ""
@@ -3129,7 +3140,7 @@ msgid "Building"
msgstr ""
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
msgstr ""
@@ -3198,7 +3209,7 @@ msgid "Variants"
msgstr ""
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
msgstr ""
@@ -3290,19 +3301,19 @@ msgstr ""
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
msgstr ""
@@ -3314,56 +3325,67 @@ msgstr ""
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr ""
-
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr ""
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
msgstr ""
@@ -3469,101 +3491,102 @@ msgstr ""
msgid "Remove filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
msgstr ""
@@ -3596,7 +3619,7 @@ msgstr ""
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
msgstr ""
@@ -3694,7 +3717,7 @@ msgstr ""
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
msgstr ""
@@ -3718,8 +3741,8 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
msgstr ""
@@ -3748,7 +3771,7 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
msgstr ""
@@ -3924,7 +3947,7 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
msgstr ""
@@ -4016,11 +4039,11 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
msgstr ""
@@ -4054,26 +4077,26 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
msgstr ""
@@ -4139,7 +4162,7 @@ msgid "Filter by part active status"
msgstr ""
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
msgstr ""
@@ -4211,31 +4234,63 @@ msgstr ""
msgid "Not Virtual"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
@@ -4306,10 +4361,6 @@ msgstr ""
msgid "Author"
msgstr ""
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr ""
-
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
msgstr ""
@@ -4479,7 +4530,7 @@ msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
msgstr ""
@@ -4869,155 +4920,243 @@ msgstr ""
msgid "Edit user"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
msgstr ""
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
+
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
msgstr ""
diff --git a/src/frontend/src/locales/es/messages.po b/src/frontend/src/locales/es/messages.po
index b7ca00661c59..41e240035db9 100644
--- a/src/frontend/src/locales/es/messages.po
+++ b/src/frontend/src/locales/es/messages.po
@@ -5,16 +5,16 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
-"Language: es_MX\n"
+"Language: es\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
-"Language-Team: Spanish, Mexico\n"
+"Language-Team: Spanish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
-"X-Crowdin-Language: es-MX\n"
+"X-Crowdin-Language: es-ES\n"
"X-Crowdin-File: /[inventree.InvenTree] l10/src/frontend/src/locales/en/messages.po\n"
"X-Crowdin-File-ID: 205\n"
@@ -53,8 +53,8 @@ msgstr ""
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
@@ -68,11 +68,11 @@ msgstr ""
#: src/components/forms/AuthenticationForm.tsx:50
msgid "Login successful"
-msgstr "Inicio de sesión exitoso"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:51
msgid "Welcome back!"
-msgstr "¡Bienvenido de vuelta!"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:53
#~ msgid "Login successfull"
@@ -80,7 +80,7 @@ msgstr "¡Bienvenido de vuelta!"
#: src/components/forms/AuthenticationForm.tsx:58
msgid "Login failed"
-msgstr "Error al iniciar sesión"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:59
#: src/components/forms/AuthenticationForm.tsx:79
@@ -97,16 +97,16 @@ msgstr ""
#: src/components/forms/AuthenticationForm.tsx:70
#: src/functions/auth.tsx:107
msgid "Mail delivery successful"
-msgstr "Envío de correo exitoso"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:71
msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
-msgstr "Revisa tu bandeja de entrada para el enlace de inicio de sesión. Si tienes una cuenta, recibirás un enlace de inicio de sesión. Revisa también el correo no deseado."
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:78
#: src/components/forms/AuthenticationForm.tsx:215
msgid "Input error"
-msgstr "Error de entrada"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:98
msgid "Or continue with other methods"
@@ -115,7 +115,7 @@ msgstr ""
#: src/components/forms/AuthenticationForm.tsx:109
#: src/components/forms/AuthenticationForm.tsx:233
msgid "Username"
-msgstr "Nombre de usuario"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:110
#: src/components/forms/AuthenticationForm.tsx:234
@@ -126,17 +126,17 @@ msgstr ""
#: src/components/forms/AuthenticationForm.tsx:246
#: src/pages/Auth/Set-Password.tsx:106
msgid "Password"
-msgstr "Contraseña"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:116
#: src/components/forms/AuthenticationForm.tsx:247
msgid "Your password"
-msgstr "Tu contraseña"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:128
#: src/pages/Auth/Reset.tsx:26
msgid "Reset password"
-msgstr "Restablecer contraseña"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:131
#~ msgid "Log in"
@@ -151,17 +151,17 @@ msgstr "Restablecer contraseña"
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
msgid "Email"
-msgstr "Correo electrónico"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:138
#: src/pages/Auth/Reset.tsx:32
#: src/pages/Auth/Set-Password.tsx:107
msgid "We will send you a link to login - if you are registered"
-msgstr "Te enviaremos un enlace para iniciar sesión - si estás registrado"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:154
msgid "Send me an email"
-msgstr "Envíame un correo electrónico"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:156
msgid "Use username and password"
@@ -229,11 +229,11 @@ msgstr ""
#: src/tables/settings/GroupTable.tsx:103
#: src/tables/settings/PendingTasksTable.tsx:26
msgid "Name"
-msgstr "Nombre"
+msgstr ""
#: src/components/forms/HostOptionsForm.tsx:74
msgid "No one here..."
-msgstr "Nadie aquí..."
+msgstr ""
#: src/components/forms/HostOptionsForm.tsx:85
msgid "Add Host"
@@ -242,11 +242,11 @@ msgstr ""
#: src/components/forms/HostOptionsForm.tsx:89
#: src/components/widgets/MarkdownEditor.tsx:73
msgid "Save"
-msgstr "Guardar"
+msgstr ""
#: src/components/forms/InstanceOptions.tsx:43
msgid "Select destination instance"
-msgstr "Seleccionar instancia de destino"
+msgstr ""
#: src/components/forms/InstanceOptions.tsx:71
msgid "Edit possible host options"
@@ -254,15 +254,15 @@ msgstr ""
#: src/components/forms/InstanceOptions.tsx:98
msgid "Version: {0}"
-msgstr "Versión: {0}"
+msgstr ""
#: src/components/forms/InstanceOptions.tsx:100
msgid "API:{0}"
-msgstr "API:{0}"
+msgstr ""
#: src/components/forms/InstanceOptions.tsx:102
msgid "Name: {0}"
-msgstr "Nombre: {0}"
+msgstr ""
#: src/components/forms/InstanceOptions.tsx:104
msgid "State: <0>worker0> ({0}), <1>plugins1>{1}"
@@ -274,26 +274,26 @@ msgstr ""
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
msgstr ""
@@ -308,7 +308,7 @@ msgstr ""
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
msgstr ""
@@ -316,8 +316,8 @@ msgstr ""
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
msgstr ""
@@ -398,7 +398,7 @@ msgid "Delete item"
msgstr ""
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
msgstr ""
@@ -416,7 +416,7 @@ msgid "Read More"
msgstr ""
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
msgstr ""
@@ -458,11 +458,19 @@ msgid "Scan QR code"
msgstr ""
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
msgstr ""
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
msgstr ""
@@ -702,7 +710,7 @@ msgstr ""
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr ""
@@ -766,8 +774,8 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
msgstr ""
@@ -777,17 +785,17 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
msgstr ""
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
msgstr ""
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
@@ -826,12 +834,12 @@ msgid "No results available for search query"
msgstr ""
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
msgstr ""
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
msgstr ""
@@ -861,168 +869,176 @@ msgid "Part Parameter Templates"
msgstr ""
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
msgstr ""
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
msgstr ""
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
msgstr ""
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
msgstr ""
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
msgstr ""
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
msgstr ""
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
msgstr ""
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
msgstr ""
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
msgstr ""
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
msgstr ""
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
msgstr ""
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
msgstr ""
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
msgstr ""
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
msgstr ""
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
msgstr ""
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
#: src/pages/purchasing/PurchasingIndex.tsx:20
msgid "Purchase Orders"
-msgstr "Órdenes de compra"
+msgstr ""
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
msgstr ""
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
msgstr ""
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
msgstr ""
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
msgstr ""
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
msgstr ""
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
msgstr ""
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
-msgstr "Ordenes de devolución"
+msgstr ""
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
msgstr ""
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
msgstr ""
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
msgstr ""
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
msgstr ""
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
msgstr ""
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
msgstr ""
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
msgstr ""
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
@@ -1038,8 +1054,8 @@ msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
msgstr ""
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -1809,7 +1816,7 @@ msgstr ""
#: src/defaults/links.tsx:11
msgid "Website"
-msgstr "Sitio web"
+msgstr ""
#: src/defaults/links.tsx:16
msgid "GitHub"
@@ -2211,7 +2218,7 @@ msgstr ""
#: src/pages/Auth/Login.tsx:75
msgid "Welcome, log in below"
-msgstr "Bienvenido, inicia sesión a continuación"
+msgstr ""
#: src/pages/Auth/Login.tsx:77
msgid "Register below"
@@ -2435,7 +2442,7 @@ msgid "Actions for {0}"
msgstr ""
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
msgstr ""
@@ -2496,7 +2503,7 @@ msgid "The history is kept in this browser's local storage. So it won't be share
msgstr ""
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
msgstr ""
@@ -2587,7 +2594,7 @@ msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:144
msgid "Primary"
-msgstr "Primario"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:149
msgid "Verified"
@@ -2786,17 +2793,17 @@ msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:65
msgid "Login"
-msgstr "Ingresar"
+msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:87
msgid "Barcodes"
-msgstr "Códigos de barras"
+msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:106
#: src/pages/company/SupplierPartDetail.tsx:55
#: src/pages/part/PartDetail.tsx:516
msgid "Pricing"
-msgstr "Precios"
+msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:118
#~ msgid "Physical Units"
@@ -2804,16 +2811,16 @@ msgstr "Precios"
#: src/pages/Index/Settings/SystemSettings.tsx:135
msgid "Exchange Rates"
-msgstr "Tasas de cambio"
+msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:141
msgid "Labels"
-msgstr "Etiquetas"
+msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:147
#: src/pages/Index/Settings/UserSettings.tsx:99
msgid "Reporting"
-msgstr "Informes"
+msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:221
#: src/pages/part/PartDetail.tsx:565
@@ -2826,23 +2833,23 @@ msgstr ""
#: src/pages/part/PartDetail.tsx:502
#: src/pages/sales/SalesOrderDetail.tsx:62
msgid "Build Orders"
-msgstr "Ordenes de Producción"
+msgstr ""
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
-msgstr "Cambiar a Configuración de Usuario"
+msgstr ""
#: src/pages/Index/Settings/UserSettings.tsx:29
msgid "Account"
-msgstr "Cuenta"
+msgstr ""
#: src/pages/Index/Settings/UserSettings.tsx:35
msgid "Security"
-msgstr "Seguridad"
+msgstr ""
#: src/pages/Index/Settings/UserSettings.tsx:46
msgid "Display Options"
-msgstr "Opciones de visualización"
+msgstr ""
#: src/pages/Index/Settings/UserSettings.tsx:115
msgid "Account Settings"
@@ -2862,7 +2869,7 @@ msgstr ""
#: src/pages/NotFound.tsx:17
msgid "Not Found"
-msgstr "No encontrado"
+msgstr ""
#: src/pages/NotFound.tsx:20
msgid "Sorry, this page is not known or was moved."
@@ -2872,7 +2879,11 @@ msgstr ""
msgid "Go to the start page"
msgstr ""
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
+
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
msgstr ""
@@ -2916,7 +2927,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
msgstr ""
@@ -2926,7 +2937,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
msgstr ""
@@ -2969,7 +2980,7 @@ msgstr ""
#: src/pages/build/BuildDetail.tsx:222
msgid "Report"
-msgstr "Informe"
+msgstr ""
#: src/pages/build/BuildDetail.tsx:223
msgid "Print build report"
@@ -2999,9 +3010,9 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
-msgstr "Detalles"
+msgstr ""
#: src/pages/company/CompanyDetail.tsx:81
msgid "Manufactured Parts"
@@ -3046,13 +3057,13 @@ msgstr ""
#: src/pages/part/CategoryDetail.tsx:71
#: src/pages/part/PartDetail.tsx:464
msgid "Parameters"
-msgstr "Parámetros"
+msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:54
#: src/pages/part/PartDetail.tsx:534
#: src/pages/purchasing/PurchasingIndex.tsx:26
msgid "Suppliers"
-msgstr "Proveedores"
+msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:98
msgid "ManufacturerPart"
@@ -3062,7 +3073,7 @@ msgstr ""
#: src/pages/company/SupplierPartDetail.tsx:68
#: src/tables/purchasing/PurchaseOrderTable.tsx:73
msgid "Supplier"
-msgstr "Proveedor"
+msgstr ""
#: src/pages/company/SupplierPartDetail.tsx:40
#: src/pages/purchasing/PurchaseOrderDetail.tsx:66
@@ -3095,9 +3106,9 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
-msgstr "En Stock"
+msgstr ""
#: src/pages/part/PartDetail.tsx:155
msgid "Minimum Stock"
@@ -3129,7 +3140,7 @@ msgid "Building"
msgstr ""
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
msgstr ""
@@ -3198,7 +3209,7 @@ msgid "Variants"
msgstr ""
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
msgstr ""
@@ -3290,19 +3301,19 @@ msgstr ""
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
msgstr ""
@@ -3314,56 +3325,67 @@ msgstr ""
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
-msgstr "Contar stock"
+msgstr ""
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
-msgstr "Agregar"
+msgstr ""
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
-msgstr "Agregar stock"
+msgstr ""
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
-msgstr "Remover stock"
+msgstr ""
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
-msgstr "Transferir"
+msgstr ""
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
-msgstr "Transferir stock"
-
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr "Duplicar artículo de stock"
+msgstr ""
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr ""
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
msgstr ""
@@ -3469,101 +3491,102 @@ msgstr ""
msgid "Remove filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
msgstr ""
@@ -3596,7 +3619,7 @@ msgstr ""
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
msgstr ""
@@ -3694,9 +3717,9 @@ msgstr ""
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
-msgstr "Activo"
+msgstr ""
#: src/tables/bom/UsedInTable.tsx:67
msgid "Show active assemblies"
@@ -3706,11 +3729,11 @@ msgstr ""
#: src/tables/part/PartTable.tsx:194
#: src/tables/part/PartVariantTable.tsx:30
msgid "Trackable"
-msgstr "Rastreable"
+msgstr ""
#: src/tables/bom/UsedInTable.tsx:72
msgid "Show trackable assemblies"
-msgstr "Mostrar ensamblajes rastreables"
+msgstr ""
#: src/tables/build/BuildLineTable.tsx:34
msgid "Show allocated lines"
@@ -3718,8 +3741,8 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
msgstr ""
@@ -3748,7 +3771,7 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
msgstr ""
@@ -3766,14 +3789,14 @@ msgstr ""
#: src/tables/build/BuildOrderTable.tsx:103
msgid "Show active orders"
-msgstr "Mostrar órdenes activas"
+msgstr ""
#: src/tables/build/BuildOrderTable.tsx:107
#: src/tables/purchasing/PurchaseOrderTable.tsx:56
#: src/tables/sales/ReturnOrderTable.tsx:46
#: src/tables/sales/SalesOrderTable.tsx:53
msgid "Filter by order status"
-msgstr "Filtrar por estado de la orden"
+msgstr ""
#: src/tables/build/BuildOrderTable.tsx:113
msgid "Show overdue status"
@@ -3787,23 +3810,23 @@ msgstr ""
#: src/tables/company/AddressTable.tsx:121
#: src/tables/company/AddressTable.tsx:185
msgid "Add Address"
-msgstr "Añadir Dirección"
+msgstr ""
#: src/tables/company/AddressTable.tsx:126
msgid "Address created"
-msgstr "Dirección creada"
+msgstr ""
#: src/tables/company/AddressTable.tsx:135
msgid "Edit Address"
-msgstr "Editar Dirección"
+msgstr ""
#: src/tables/company/AddressTable.tsx:143
msgid "Delete Address"
-msgstr "Eliminar Dirección"
+msgstr ""
#: src/tables/company/AddressTable.tsx:145
msgid "Are you sure you want to delete this address?"
-msgstr "¿Estás seguro de que deseas eliminar esta dirección?"
+msgstr ""
#: src/tables/company/CompanyTable.tsx:62
msgid "New Company"
@@ -3815,7 +3838,7 @@ msgstr ""
#: src/tables/company/ContactTable.tsx:73
msgid "Edit Contact"
-msgstr "Editar contacto"
+msgstr ""
#: src/tables/company/ContactTable.tsx:80
msgid "Add Contact"
@@ -3823,23 +3846,23 @@ msgstr ""
#: src/tables/company/ContactTable.tsx:91
msgid "Delete Contact"
-msgstr "Eliminar contacto"
+msgstr ""
#: src/tables/company/ContactTable.tsx:131
msgid "Add contact"
-msgstr "Agregar contacto"
+msgstr ""
#: src/tables/general/AttachmentTable.tsx:161
msgid "File uploaded"
-msgstr "Archivo subido"
+msgstr ""
#: src/tables/general/AttachmentTable.tsx:162
msgid "File {0} uploaded successfully"
-msgstr "Archivo {0} se subió correctamente"
+msgstr ""
#: src/tables/general/AttachmentTable.tsx:173
msgid "Upload Error"
-msgstr "Error al subir"
+msgstr ""
#: src/tables/general/AttachmentTable.tsx:174
msgid "File could not be uploaded"
@@ -3924,7 +3947,7 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
msgstr ""
@@ -4016,11 +4039,11 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
msgstr ""
@@ -4054,26 +4077,26 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
msgstr ""
@@ -4120,7 +4143,7 @@ msgstr ""
#: src/tables/part/PartTable.tsx:80
msgid "Minimum stock"
-msgstr "Stock mínimo"
+msgstr ""
#: src/tables/part/PartTable.tsx:89
msgid "On Order"
@@ -4139,7 +4162,7 @@ msgid "Filter by part active status"
msgstr ""
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
msgstr ""
@@ -4211,31 +4234,63 @@ msgstr ""
msgid "Not Virtual"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
@@ -4306,10 +4361,6 @@ msgstr ""
msgid "Author"
msgstr ""
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr ""
-
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
msgstr ""
@@ -4479,7 +4530,7 @@ msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
msgstr ""
@@ -4587,11 +4638,11 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:245
msgid "Add line item"
-msgstr "Añadir Artículo de Línea"
+msgstr ""
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:251
msgid "Receive items"
-msgstr "Recibir artículos"
+msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:102
#: src/tables/purchasing/PurchaseOrderTable.tsx:119
@@ -4604,7 +4655,7 @@ msgstr ""
#: src/tables/purchasing/SupplierPartTable.tsx:114
msgid "Base units"
-msgstr "Unidades base"
+msgstr ""
#: src/tables/purchasing/SupplierPartTable.tsx:140
msgid "Updated"
@@ -4657,11 +4708,11 @@ msgstr ""
#: src/tables/settings/CurrencyTable.tsx:28
msgid "Rate"
-msgstr "Tarifa"
+msgstr ""
#: src/tables/settings/CurrencyTable.tsx:40
msgid "Exchange rates updated"
-msgstr "Tipos de cambio actualizados"
+msgstr ""
#: src/tables/settings/CurrencyTable.tsx:46
msgid "Exchange rate update error"
@@ -4753,7 +4804,7 @@ msgstr ""
#: src/tables/settings/GroupTable.tsx:126
msgid "Delete group"
-msgstr "Eliminar grupo"
+msgstr ""
#: src/tables/settings/GroupTable.tsx:127
msgid "Group deleted"
@@ -4766,11 +4817,11 @@ msgstr ""
#: src/tables/settings/GroupTable.tsx:134
#: src/tables/settings/GroupTable.tsx:146
msgid "Add group"
-msgstr "Agregar grupo"
+msgstr ""
#: src/tables/settings/GroupTable.tsx:158
msgid "Edit group"
-msgstr "Editar grupo"
+msgstr ""
#: src/tables/settings/PendingTasksTable.tsx:30
msgid "Created"
@@ -4794,7 +4845,7 @@ msgstr ""
#: src/tables/settings/ProjectCodeTable.tsx:94
msgid "Add project code"
-msgstr "Agregar código de proyecto"
+msgstr ""
#: src/tables/settings/ScheduledTasksTable.tsx:25
msgid "Last Run"
@@ -4863,161 +4914,249 @@ msgstr ""
#: src/tables/settings/UserTable.tsx:222
msgid "Added user"
-msgstr "Usuario agregado"
+msgstr ""
#: src/tables/settings/UserTable.tsx:239
msgid "Edit user"
-msgstr "Editar usuario"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
-msgstr "En producción"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
msgstr ""
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
+
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
msgstr ""
@@ -5053,5 +5192,5 @@ msgstr ""
#: src/views/MobileAppView.tsx:23
msgid "Read the docs"
-msgstr "Leer la documentación"
+msgstr ""
diff --git a/src/frontend/src/locales/fa/messages.po b/src/frontend/src/locales/fa/messages.po
index bfdc3f77d030..f3ab02744950 100644
--- a/src/frontend/src/locales/fa/messages.po
+++ b/src/frontend/src/locales/fa/messages.po
@@ -5054,4 +5054,3 @@ msgstr ""
#: src/views/MobileAppView.tsx:23
msgid "Read the docs"
msgstr ""
-
diff --git a/src/frontend/src/locales/fi/messages.po b/src/frontend/src/locales/fi/messages.po
index a81b30219b28..df5a5371701c 100644
--- a/src/frontend/src/locales/fi/messages.po
+++ b/src/frontend/src/locales/fi/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: fi\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Finnish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -53,8 +53,8 @@ msgstr ""
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
@@ -274,26 +274,26 @@ msgstr ""
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
msgstr ""
@@ -308,7 +308,7 @@ msgstr ""
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
msgstr ""
@@ -316,8 +316,8 @@ msgstr ""
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
msgstr ""
@@ -398,7 +398,7 @@ msgid "Delete item"
msgstr ""
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
msgstr ""
@@ -416,7 +416,7 @@ msgid "Read More"
msgstr ""
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
msgstr ""
@@ -458,11 +458,19 @@ msgid "Scan QR code"
msgstr ""
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
msgstr ""
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
msgstr ""
@@ -702,7 +710,7 @@ msgstr ""
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr ""
@@ -766,8 +774,8 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
msgstr ""
@@ -777,17 +785,17 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
msgstr ""
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
msgstr ""
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
@@ -826,12 +834,12 @@ msgid "No results available for search query"
msgstr ""
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
msgstr ""
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
msgstr ""
@@ -861,88 +869,96 @@ msgid "Part Parameter Templates"
msgstr ""
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
msgstr ""
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
msgstr ""
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
msgstr ""
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
msgstr ""
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
msgstr ""
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
msgstr ""
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
msgstr ""
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
msgstr ""
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
msgstr ""
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
msgstr ""
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
msgstr ""
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
msgstr ""
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
msgstr ""
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
msgstr ""
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
msgstr ""
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
@@ -950,79 +966,79 @@ msgstr ""
msgid "Purchase Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
msgstr ""
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
msgstr ""
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
msgstr ""
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
msgstr ""
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
msgstr ""
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
msgstr ""
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
msgstr ""
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
msgstr ""
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
msgstr ""
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
msgstr ""
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
msgstr ""
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
msgstr ""
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
msgstr ""
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
@@ -1038,8 +1054,8 @@ msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
msgstr ""
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -2435,7 +2442,7 @@ msgid "Actions for {0}"
msgstr ""
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
msgstr ""
@@ -2496,7 +2503,7 @@ msgid "The history is kept in this browser's local storage. So it won't be share
msgstr ""
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
msgstr ""
@@ -2828,7 +2835,7 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
msgstr ""
@@ -2872,7 +2879,11 @@ msgstr ""
msgid "Go to the start page"
msgstr ""
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
+
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
msgstr ""
@@ -2916,7 +2927,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
msgstr ""
@@ -2926,7 +2937,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
msgstr ""
@@ -2999,7 +3010,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
msgstr ""
@@ -3095,7 +3106,7 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
msgstr ""
@@ -3129,7 +3140,7 @@ msgid "Building"
msgstr ""
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
msgstr ""
@@ -3198,7 +3209,7 @@ msgid "Variants"
msgstr ""
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
msgstr ""
@@ -3290,19 +3301,19 @@ msgstr ""
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
msgstr ""
@@ -3314,56 +3325,67 @@ msgstr ""
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr ""
-
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr ""
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
msgstr ""
@@ -3469,101 +3491,102 @@ msgstr ""
msgid "Remove filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
msgstr ""
@@ -3596,7 +3619,7 @@ msgstr ""
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
msgstr ""
@@ -3694,7 +3717,7 @@ msgstr ""
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
msgstr ""
@@ -3718,8 +3741,8 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
msgstr ""
@@ -3748,7 +3771,7 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
msgstr ""
@@ -3924,7 +3947,7 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
msgstr ""
@@ -4016,11 +4039,11 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
msgstr ""
@@ -4054,26 +4077,26 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
msgstr ""
@@ -4139,7 +4162,7 @@ msgid "Filter by part active status"
msgstr ""
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
msgstr ""
@@ -4211,31 +4234,63 @@ msgstr ""
msgid "Not Virtual"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
@@ -4306,10 +4361,6 @@ msgstr ""
msgid "Author"
msgstr ""
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr ""
-
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
msgstr ""
@@ -4479,7 +4530,7 @@ msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
msgstr ""
@@ -4869,155 +4920,243 @@ msgstr ""
msgid "Edit user"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
msgstr ""
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
+
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
msgstr ""
diff --git a/src/frontend/src/locales/fr/messages.po b/src/frontend/src/locales/fr/messages.po
index 3e6754382b23..f2ba9bed8abf 100644
--- a/src/frontend/src/locales/fr/messages.po
+++ b/src/frontend/src/locales/fr/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: fr\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:42\n"
+"PO-Revision-Date: 2024-02-20 04:24\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
@@ -53,8 +53,8 @@ msgstr "Mise à jour"
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
@@ -274,26 +274,26 @@ msgstr ""
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
msgstr "Erreur"
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
msgstr "Rechercher"
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
msgstr "Chargement"
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
msgstr "Aucun résultat trouvé"
@@ -308,7 +308,7 @@ msgstr "Supprimer l'image associée de cet élément ?"
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
msgstr "Supprimer"
@@ -316,8 +316,8 @@ msgstr "Supprimer"
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
msgstr "Annuler"
@@ -398,7 +398,7 @@ msgid "Delete item"
msgstr "Supprimer l’article"
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
msgstr "Dupliquer"
@@ -416,7 +416,7 @@ msgid "Read More"
msgstr "En Savoir Plus"
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
msgstr "Erreur inconnue"
@@ -458,11 +458,19 @@ msgid "Scan QR code"
msgstr "Scanner le QR code"
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
msgstr "Oui"
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
msgstr "Non"
@@ -702,7 +710,7 @@ msgstr "Paramètres du compte"
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr "Les paramètres du système"
@@ -766,8 +774,8 @@ msgstr "À propos"
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
msgstr "Notifications"
@@ -777,17 +785,17 @@ msgstr "Vous n'avez pas de notifications non lues."
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
msgstr "Notification"
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
msgstr "Marqué comme lu"
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
@@ -826,12 +834,12 @@ msgid "No results available for search query"
msgstr "Aucun résultat disponible pour la requête"
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
msgstr "Emplacements de stock"
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
msgstr "Modèle inconnu : {model}"
@@ -861,88 +869,96 @@ msgid "Part Parameter Templates"
msgstr "Modèles de paramètres de pièce"
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
msgstr "Pièce fournisseur"
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
msgstr "Pièces du fournisseur"
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
msgstr "Pièces du fabricant"
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
msgstr "Pièces du fabricant"
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
msgstr "Catégorie de composant"
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
msgstr "Article en stock"
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
msgstr "Articles en stock"
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
msgstr "Emplacement du stock"
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
msgstr "Historique du stock"
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
msgstr "Historique du stock"
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
msgstr "Construction"
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
msgstr "Construction"
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
msgstr "Société"
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
msgstr "Sociétés"
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
msgstr "Code du projet"
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
msgstr "Codes du projet"
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
msgstr "Commande d’achat"
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
@@ -950,79 +966,79 @@ msgstr "Commande d’achat"
msgid "Purchase Orders"
msgstr "Ordres d'achat"
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
msgstr "Ligne de commande d'achat"
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
msgstr "Lignes de commande d'achat"
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
msgstr "Ventes"
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
msgstr "Ordres de vente"
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
msgstr "Expédition de la commande"
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
msgstr "Expéditions de la commande"
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
msgstr "Retour de commande"
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
msgstr "Retours"
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
msgstr "Adresse"
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
msgstr "Adresses"
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
msgstr "Contact"
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
msgstr "Contacts"
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
msgstr "Propriétaire"
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
msgstr ""
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
msgstr "Utilisateur"
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
@@ -1038,8 +1054,8 @@ msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
msgstr ""
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -2435,7 +2442,7 @@ msgid "Actions for {0}"
msgstr ""
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
msgstr ""
@@ -2496,7 +2503,7 @@ msgid "The history is kept in this browser's local storage. So it won't be share
msgstr ""
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
msgstr ""
@@ -2828,7 +2835,7 @@ msgstr ""
msgid "Build Orders"
msgstr "Ordres de fabrication"
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
msgstr ""
@@ -2872,7 +2879,11 @@ msgstr "Désolé, cette page est inconnue ou a été déplacée."
msgid "Go to the start page"
msgstr "Aller à la page d'accueil"
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
+
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
msgstr ""
@@ -2916,7 +2927,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
msgstr ""
@@ -2926,7 +2937,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
msgstr ""
@@ -2999,7 +3010,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
msgstr ""
@@ -3095,7 +3106,7 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
msgstr ""
@@ -3129,7 +3140,7 @@ msgid "Building"
msgstr "Construire"
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
msgstr "Catégorie"
@@ -3198,7 +3209,7 @@ msgid "Variants"
msgstr "Variants"
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
msgstr "Allocations"
@@ -3290,19 +3301,19 @@ msgstr ""
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
msgstr ""
@@ -3314,56 +3325,67 @@ msgstr ""
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr ""
-
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr ""
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
msgstr "Date cible"
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
msgstr "Devise"
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
msgstr "Prix total"
@@ -3469,101 +3491,102 @@ msgstr "Afficher les commandes en retard"
msgid "Remove filter"
msgstr "Supprimer le filtre"
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
msgstr "Sélection du filtre"
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
msgstr "Filtrer"
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
msgstr "Valeur"
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
msgstr "Sélection de la valeur du filtre"
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
msgstr "Filtres des tables"
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
msgstr "Ajouter un filtre"
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
msgstr "Effacer filtres"
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
msgstr "Pas d'enregistrement trouvé"
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
msgstr "Le serveur à retourner un type de donnée incorrect"
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
msgstr "Requête invalide"
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
msgstr "Non autorisé"
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
msgstr "Accès interdit"
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
msgstr "Elément non trouvé"
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
msgstr "Supprimer les enregistrements sélectionnés"
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
msgstr "Êtes-vous sûr de vouloir supprimer les enregistrements sélectionnés ?"
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
msgstr "Cette action ne peut pas être annulée !"
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
msgstr "Enregistrement supprimé"
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
msgstr "Les enregistrements ont été supprimés avec succès"
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
msgstr "Échec de la suppression des enregistrements"
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
msgstr "Actions de code-barres"
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
msgstr "Actions d'impression"
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
msgstr "Actualiser les données"
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
msgstr "Filtres de tableau"
@@ -3596,7 +3619,7 @@ msgstr "Inclut le stock de variantes"
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
msgstr "Information de stock"
@@ -3694,7 +3717,7 @@ msgstr ""
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
msgstr ""
@@ -3718,8 +3741,8 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
msgstr "Disponible"
@@ -3748,7 +3771,7 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
msgstr ""
@@ -3924,7 +3947,7 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
msgstr "Status"
@@ -4016,11 +4039,11 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
msgstr ""
@@ -4054,26 +4077,26 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
msgstr ""
@@ -4139,7 +4162,7 @@ msgid "Filter by part active status"
msgstr ""
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
msgstr ""
@@ -4211,31 +4234,63 @@ msgstr ""
msgid "Not Virtual"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
@@ -4306,10 +4361,6 @@ msgstr ""
msgid "Author"
msgstr ""
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr ""
-
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
msgstr ""
@@ -4479,7 +4530,7 @@ msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
msgstr ""
@@ -4869,155 +4920,243 @@ msgstr ""
msgid "Edit user"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
msgstr ""
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
+
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
msgstr ""
diff --git a/src/frontend/src/locales/he/messages.po b/src/frontend/src/locales/he/messages.po
index 26c0db0fd5d9..0e0d3dd01d3e 100644
--- a/src/frontend/src/locales/he/messages.po
+++ b/src/frontend/src/locales/he/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: he\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n"
@@ -53,8 +53,8 @@ msgstr ""
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
@@ -274,26 +274,26 @@ msgstr ""
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
msgstr ""
@@ -308,7 +308,7 @@ msgstr ""
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
msgstr ""
@@ -316,8 +316,8 @@ msgstr ""
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
msgstr ""
@@ -398,7 +398,7 @@ msgid "Delete item"
msgstr ""
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
msgstr ""
@@ -416,7 +416,7 @@ msgid "Read More"
msgstr ""
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
msgstr ""
@@ -458,11 +458,19 @@ msgid "Scan QR code"
msgstr ""
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
msgstr ""
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
msgstr ""
@@ -702,7 +710,7 @@ msgstr ""
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr ""
@@ -766,8 +774,8 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
msgstr ""
@@ -777,17 +785,17 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
msgstr ""
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
msgstr ""
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
@@ -826,12 +834,12 @@ msgid "No results available for search query"
msgstr ""
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
msgstr ""
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
msgstr ""
@@ -861,88 +869,96 @@ msgid "Part Parameter Templates"
msgstr ""
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
msgstr ""
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
msgstr ""
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
msgstr ""
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
msgstr ""
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
msgstr ""
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
msgstr ""
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
msgstr ""
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
msgstr ""
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
msgstr ""
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
msgstr ""
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
msgstr ""
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
msgstr ""
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
msgstr ""
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
msgstr ""
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
msgstr ""
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
@@ -950,79 +966,79 @@ msgstr ""
msgid "Purchase Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
msgstr ""
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
msgstr ""
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
msgstr ""
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
msgstr ""
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
msgstr ""
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
msgstr ""
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
msgstr ""
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
msgstr ""
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
msgstr ""
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
msgstr ""
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
msgstr ""
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
msgstr ""
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
msgstr ""
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
@@ -1038,8 +1054,8 @@ msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
msgstr ""
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -2435,7 +2442,7 @@ msgid "Actions for {0}"
msgstr ""
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
msgstr ""
@@ -2496,7 +2503,7 @@ msgid "The history is kept in this browser's local storage. So it won't be share
msgstr ""
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
msgstr ""
@@ -2828,7 +2835,7 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
msgstr ""
@@ -2872,7 +2879,11 @@ msgstr ""
msgid "Go to the start page"
msgstr ""
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
+
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
msgstr ""
@@ -2916,7 +2927,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
msgstr ""
@@ -2926,7 +2937,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
msgstr ""
@@ -2999,7 +3010,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
msgstr ""
@@ -3095,7 +3106,7 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
msgstr ""
@@ -3129,7 +3140,7 @@ msgid "Building"
msgstr ""
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
msgstr ""
@@ -3198,7 +3209,7 @@ msgid "Variants"
msgstr ""
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
msgstr ""
@@ -3290,19 +3301,19 @@ msgstr ""
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
msgstr ""
@@ -3314,56 +3325,67 @@ msgstr ""
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr ""
-
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr ""
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
msgstr ""
@@ -3469,101 +3491,102 @@ msgstr ""
msgid "Remove filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
msgstr ""
@@ -3596,7 +3619,7 @@ msgstr ""
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
msgstr ""
@@ -3694,7 +3717,7 @@ msgstr ""
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
msgstr ""
@@ -3718,8 +3741,8 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
msgstr ""
@@ -3748,7 +3771,7 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
msgstr ""
@@ -3924,7 +3947,7 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
msgstr ""
@@ -4016,11 +4039,11 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
msgstr ""
@@ -4054,26 +4077,26 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
msgstr ""
@@ -4139,7 +4162,7 @@ msgid "Filter by part active status"
msgstr ""
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
msgstr ""
@@ -4211,31 +4234,63 @@ msgstr ""
msgid "Not Virtual"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
@@ -4306,10 +4361,6 @@ msgstr ""
msgid "Author"
msgstr ""
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr ""
-
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
msgstr ""
@@ -4479,7 +4530,7 @@ msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
msgstr ""
@@ -4869,155 +4920,243 @@ msgstr ""
msgid "Edit user"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
msgstr ""
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
+
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
msgstr ""
diff --git a/src/frontend/src/locales/hi/messages.po b/src/frontend/src/locales/hi/messages.po
index 0aea45f5cc36..a996c98cd8b3 100644
--- a/src/frontend/src/locales/hi/messages.po
+++ b/src/frontend/src/locales/hi/messages.po
@@ -5054,4 +5054,3 @@ msgstr ""
#: src/views/MobileAppView.tsx:23
msgid "Read the docs"
msgstr ""
-
diff --git a/src/frontend/src/locales/hu/messages.po b/src/frontend/src/locales/hu/messages.po
index afd16cfc0acf..d4579c543c44 100644
--- a/src/frontend/src/locales/hu/messages.po
+++ b/src/frontend/src/locales/hu/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: hu\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -53,8 +53,8 @@ msgstr ""
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
@@ -274,26 +274,26 @@ msgstr "Státusz: <0>worker0> ({0}), <1>plugins1>{1}"
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
msgstr "Hiba"
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
msgstr "Keresés"
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
msgstr "Betöltés"
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
msgstr "Nincs találat"
@@ -308,7 +308,7 @@ msgstr ""
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
msgstr "Eltávolítás"
@@ -316,8 +316,8 @@ msgstr "Eltávolítás"
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
msgstr "Mégsem"
@@ -398,7 +398,7 @@ msgid "Delete item"
msgstr "Tétel törlése"
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
msgstr "Másolás"
@@ -416,7 +416,7 @@ msgid "Read More"
msgstr "Tudj meg többet"
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
msgstr "Ismeretlen hiba"
@@ -458,11 +458,19 @@ msgid "Scan QR code"
msgstr "QR kód beolvasása"
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
msgstr "Igen"
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
msgstr "Nem"
@@ -702,7 +710,7 @@ msgstr "Fiókbeállítások"
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr "Rendszerbeállítások"
@@ -766,8 +774,8 @@ msgstr "Névjegy"
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
msgstr "Értesítések"
@@ -777,17 +785,17 @@ msgstr "Nincs olvasatlan értesítésed."
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
msgstr "Értesítés"
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
msgstr "Megjelölés olvasottként"
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
@@ -826,12 +834,12 @@ msgid "No results available for search query"
msgstr "Nincs találat a keresésre"
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
msgstr "Készlethelyek"
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
msgstr "Ismeretlen model: {model}"
@@ -861,88 +869,96 @@ msgid "Part Parameter Templates"
msgstr "Alkatrész paraméter sablonok"
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
msgstr "Beszállítói alkatrész"
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
msgstr "Beszállítói alkatrészek"
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
msgstr "Gyártói alkatrész"
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
msgstr "Gyártói alkatrészek"
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
msgstr "Alkatrész kategória"
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
msgstr "Készlet tétel"
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
msgstr "Készlet tételek"
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
msgstr "Készlet hely"
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
msgstr "Készlettörténet"
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
msgstr "Készlettörténet"
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
msgstr "Gyártás"
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
msgstr "Gyártások"
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
msgstr "Cég"
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
msgstr "Cégek"
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
msgstr "Projektszám"
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
msgstr "Projektszámok"
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
msgstr "Beszerzési rendelés"
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
@@ -950,79 +966,79 @@ msgstr "Beszerzési rendelés"
msgid "Purchase Orders"
msgstr "Beszerzési rendelések"
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
msgstr "Beszerzési rendelés tétel"
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
msgstr "Beszerzési rendelés tételei"
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
msgstr "Vevői rendelés"
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
msgstr "Vevői rendelések"
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
msgstr "Vevői rendelés szállítmány"
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
msgstr "Vevői rendelés szállítmányok"
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
msgstr "Visszavétel"
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
msgstr "Visszavételek"
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
msgstr "Cím"
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
msgstr "Címek"
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
msgstr "Kapcsolat"
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
msgstr "Kapcsolatok"
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
msgstr "Tulajdonos"
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
msgstr "Tulajdonosok"
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
msgstr "Felhasználó"
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
@@ -1038,8 +1054,8 @@ msgstr "Szállítmány"
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
msgstr "Készlet"
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -2435,7 +2442,7 @@ msgid "Actions for {0}"
msgstr "{0} műveletei"
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
msgstr "Mennyiség"
@@ -2496,7 +2503,7 @@ msgid "The history is kept in this browser's local storage. So it won't be share
msgstr "Az előzmények a böngésző helyi tárhelyén tárolódnak. Így nem lesz megosztva más felhasználókkal vagy más eszközökkel, de az újratöltések során megmarad. Kijelölhetsz elemeket az előzményekből, hogy műveleteket hajts végre rajtuk. Elemek hozzáadásához szkennelje be/írja be azokat a beviteli területen."
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
msgstr "Előzmények"
@@ -2828,7 +2835,7 @@ msgstr "Leltár"
msgid "Build Orders"
msgstr "Gyártási utasítások"
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
msgstr "Felhasználói beállításra váltás"
@@ -2872,7 +2879,11 @@ msgstr "Elnézést, ez az oldal ismeretlen vagy el lett mozgatva."
msgid "Go to the start page"
msgstr "Ugrás a kezdőlapra"
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
+
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
msgstr "Megjelölés olvasatlanként"
@@ -2916,7 +2927,7 @@ msgstr "Alárendelt gyártások"
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
msgstr "Mellékletek"
@@ -2926,7 +2937,7 @@ msgstr "Mellékletek"
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
msgstr "Megjegyzések"
@@ -2999,7 +3010,7 @@ msgstr "Gyártáshoz foglalások"
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
msgstr "Részletek"
@@ -3095,7 +3106,7 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
msgstr "Készleten"
@@ -3129,7 +3140,7 @@ msgid "Building"
msgstr "Gyártásban"
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
msgstr "Kategória"
@@ -3198,7 +3209,7 @@ msgid "Variants"
msgstr "Változatok"
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
msgstr "Foglalások"
@@ -3290,19 +3301,19 @@ msgstr "Kész szállítmányok"
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
msgstr "Készlettörténet"
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
msgstr "Teszt adatok"
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
msgstr "Beépített tételek"
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
msgstr "Gyermek tételek"
@@ -3314,56 +3325,67 @@ msgstr "Gyermek tételek"
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
msgstr "Készlet műveletek"
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
msgstr "Leltározás"
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
msgstr "Hozzáadás"
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
msgstr "Készlethez ad"
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
msgstr "Készlet csökkentése"
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
msgstr "Áthelyezés"
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
msgstr "Készlet áthelyezése"
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr "Készlet tétel másolása"
-
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr "Készlet tétel másolása"
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
msgstr "Cél dátum"
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
msgstr "Pénznem"
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
msgstr "Teljes ár"
@@ -3469,101 +3491,102 @@ msgstr ""
msgid "Remove filter"
msgstr "Szűrő eltávolítása"
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
msgstr "Szűrő kiválasztása"
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
msgstr "Szűrő"
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
msgstr "Érték"
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
msgstr "Szűrő érték kiválasztása"
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
msgstr "Szűrő hozzáadása"
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
msgstr "Nincs találat"
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
msgstr "A szerver hibás adattípust küldött vissza"
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
msgstr "Hibás kérés"
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
msgstr "Jogosulatlan"
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
msgstr "Tiltott"
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
msgstr "Nem található"
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
msgstr "Vonalkód műveletek"
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
msgstr "Nyomtatási műveletek"
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
msgstr "Adatok frissítése"
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
msgstr "Táblaszűrők"
@@ -3596,7 +3619,7 @@ msgstr "Változatokkal együtt"
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
msgstr "Készlet adatok"
@@ -3694,7 +3717,7 @@ msgstr "Biztos benne, hogy eltávolítja ezt az alkatrészjegyzék tételt?"
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
msgstr "Aktív"
@@ -3718,8 +3741,8 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
msgstr "Elérhető"
@@ -3748,7 +3771,7 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
msgstr "Nincs elérhető készlet"
@@ -3924,7 +3947,7 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
msgstr "Állapot"
@@ -4016,11 +4039,11 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
msgstr "Életkor"
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
msgstr "Üzenet"
@@ -4054,26 +4077,26 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
msgstr "Alkatrész paraméter szerkesztése"
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
msgstr "Alkatrész paraméter törlése"
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
msgstr "Paraméter hozzáadás"
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
msgstr "Változatok is"
@@ -4139,7 +4162,7 @@ msgid "Filter by part active status"
msgstr "Szűrés aktív státusz szerint"
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
msgstr "Gyártmány"
@@ -4211,31 +4234,63 @@ msgstr "Szűrés virtuális alkatrészek szerint"
msgid "Not Virtual"
msgstr "Nem virtuális"
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
@@ -4306,10 +4361,6 @@ msgstr ""
msgid "Author"
msgstr ""
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr ""
-
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
msgstr ""
@@ -4479,7 +4530,7 @@ msgid "Sample"
msgstr "Minta"
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
msgstr "Telepítve"
@@ -4869,155 +4920,243 @@ msgstr "Felhasználó hozzáadása sikeres"
msgid "Edit user"
msgstr "Felhasználó szerkesztése"
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
msgstr "Ez a készlet tétel gyártásban van"
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
msgstr "Készlet tétel hozzárendelve egy vevői rendeléshez"
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
msgstr "Készlet tétel hozzárendelve egy vevőhöz"
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
msgstr "Készlet tétel beépült egy másikba"
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
msgstr "Készlet tétel fel lett használva egy gyártásban"
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
msgstr "Készlet tétel lejárt"
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
msgstr "Készlet tétel lejárt"
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
msgstr "Készlet tétel teljesen foglalva"
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
msgstr "Készlet tétel részlegesen foglalva"
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
msgstr "Készlet tétel elfogyott"
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
msgstr ""
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
+
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
msgstr ""
diff --git a/src/frontend/src/locales/it/messages.po b/src/frontend/src/locales/it/messages.po
index 2efbfd752d22..eb5ce674a26e 100644
--- a/src/frontend/src/locales/it/messages.po
+++ b/src/frontend/src/locales/it/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: it\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -53,8 +53,8 @@ msgstr ""
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
@@ -274,26 +274,26 @@ msgstr ""
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
msgstr ""
@@ -308,7 +308,7 @@ msgstr ""
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
msgstr ""
@@ -316,8 +316,8 @@ msgstr ""
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
msgstr ""
@@ -398,7 +398,7 @@ msgid "Delete item"
msgstr ""
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
msgstr ""
@@ -416,7 +416,7 @@ msgid "Read More"
msgstr ""
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
msgstr ""
@@ -458,11 +458,19 @@ msgid "Scan QR code"
msgstr ""
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
msgstr ""
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
msgstr ""
@@ -702,7 +710,7 @@ msgstr ""
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr ""
@@ -766,8 +774,8 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
msgstr ""
@@ -777,17 +785,17 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
msgstr ""
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
msgstr ""
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
@@ -826,12 +834,12 @@ msgid "No results available for search query"
msgstr ""
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
msgstr ""
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
msgstr ""
@@ -861,88 +869,96 @@ msgid "Part Parameter Templates"
msgstr ""
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
msgstr ""
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
msgstr ""
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
msgstr ""
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
msgstr ""
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
msgstr ""
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
msgstr ""
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
msgstr ""
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
msgstr ""
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
msgstr ""
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
msgstr ""
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
msgstr ""
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
msgstr ""
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
msgstr ""
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
msgstr ""
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
msgstr ""
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
@@ -950,79 +966,79 @@ msgstr ""
msgid "Purchase Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
msgstr ""
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
msgstr ""
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
msgstr ""
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
msgstr ""
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
msgstr ""
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
msgstr ""
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
msgstr ""
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
msgstr ""
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
msgstr ""
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
msgstr ""
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
msgstr ""
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
msgstr ""
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
msgstr ""
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
@@ -1038,8 +1054,8 @@ msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
msgstr ""
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -2435,7 +2442,7 @@ msgid "Actions for {0}"
msgstr ""
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
msgstr ""
@@ -2496,7 +2503,7 @@ msgid "The history is kept in this browser's local storage. So it won't be share
msgstr ""
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
msgstr ""
@@ -2828,7 +2835,7 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
msgstr ""
@@ -2872,7 +2879,11 @@ msgstr ""
msgid "Go to the start page"
msgstr ""
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
+
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
msgstr ""
@@ -2916,7 +2927,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
msgstr ""
@@ -2926,7 +2937,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
msgstr ""
@@ -2999,7 +3010,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
msgstr ""
@@ -3095,7 +3106,7 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
msgstr ""
@@ -3129,7 +3140,7 @@ msgid "Building"
msgstr ""
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
msgstr ""
@@ -3198,7 +3209,7 @@ msgid "Variants"
msgstr ""
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
msgstr ""
@@ -3290,19 +3301,19 @@ msgstr ""
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
msgstr ""
@@ -3314,56 +3325,67 @@ msgstr ""
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr ""
-
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr ""
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
msgstr ""
@@ -3469,101 +3491,102 @@ msgstr ""
msgid "Remove filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
msgstr ""
@@ -3596,7 +3619,7 @@ msgstr ""
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
msgstr ""
@@ -3694,7 +3717,7 @@ msgstr ""
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
msgstr ""
@@ -3718,8 +3741,8 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
msgstr ""
@@ -3748,7 +3771,7 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
msgstr ""
@@ -3924,7 +3947,7 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
msgstr ""
@@ -4016,11 +4039,11 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
msgstr ""
@@ -4054,26 +4077,26 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
msgstr ""
@@ -4139,7 +4162,7 @@ msgid "Filter by part active status"
msgstr ""
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
msgstr ""
@@ -4211,31 +4234,63 @@ msgstr ""
msgid "Not Virtual"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
@@ -4306,10 +4361,6 @@ msgstr ""
msgid "Author"
msgstr ""
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr ""
-
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
msgstr ""
@@ -4479,7 +4530,7 @@ msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
msgstr ""
@@ -4869,155 +4920,243 @@ msgstr ""
msgid "Edit user"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
msgstr ""
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
+
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
msgstr ""
diff --git a/src/frontend/src/locales/ja/messages.po b/src/frontend/src/locales/ja/messages.po
index 0dff4267ec24..1b75244af036 100644
--- a/src/frontend/src/locales/ja/messages.po
+++ b/src/frontend/src/locales/ja/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: ja\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -53,8 +53,8 @@ msgstr ""
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
@@ -274,26 +274,26 @@ msgstr ""
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
msgstr "エラー"
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
msgstr "読み込み中"
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
msgstr ""
@@ -308,7 +308,7 @@ msgstr ""
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
msgstr ""
@@ -316,8 +316,8 @@ msgstr ""
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
msgstr "キャンセル"
@@ -398,7 +398,7 @@ msgid "Delete item"
msgstr ""
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
msgstr ""
@@ -416,7 +416,7 @@ msgid "Read More"
msgstr "続きを読む"
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
msgstr ""
@@ -458,11 +458,19 @@ msgid "Scan QR code"
msgstr ""
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
msgstr ""
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
msgstr ""
@@ -702,7 +710,7 @@ msgstr ""
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr ""
@@ -766,8 +774,8 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
msgstr ""
@@ -777,17 +785,17 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
msgstr ""
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
msgstr "既読にする"
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
@@ -826,12 +834,12 @@ msgid "No results available for search query"
msgstr ""
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
msgstr "在庫場所"
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
msgstr ""
@@ -861,88 +869,96 @@ msgid "Part Parameter Templates"
msgstr ""
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
msgstr ""
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
msgstr ""
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
msgstr ""
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
msgstr "在庫商品"
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
msgstr "在庫商品"
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
msgstr "在庫場所"
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
msgstr ""
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
msgstr ""
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
msgstr ""
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
msgstr ""
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
msgstr ""
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
msgstr ""
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
msgstr ""
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
msgstr ""
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
msgstr ""
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
@@ -950,79 +966,79 @@ msgstr ""
msgid "Purchase Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
msgstr ""
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
msgstr ""
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
msgstr ""
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
msgstr ""
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
msgstr ""
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
msgstr ""
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
msgstr ""
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
msgstr ""
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
msgstr ""
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
msgstr ""
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
msgstr ""
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
msgstr ""
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
msgstr "ユーザー"
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
@@ -1038,8 +1054,8 @@ msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
msgstr "在庫"
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -2435,7 +2442,7 @@ msgid "Actions for {0}"
msgstr ""
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
msgstr ""
@@ -2496,7 +2503,7 @@ msgid "The history is kept in this browser's local storage. So it won't be share
msgstr ""
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
msgstr ""
@@ -2828,7 +2835,7 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
msgstr ""
@@ -2872,7 +2879,11 @@ msgstr ""
msgid "Go to the start page"
msgstr ""
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
+
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
msgstr "未読にする"
@@ -2916,7 +2927,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
msgstr "添付ファイル"
@@ -2926,7 +2937,7 @@ msgstr "添付ファイル"
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
msgstr "メモ"
@@ -2999,7 +3010,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
msgstr "詳細"
@@ -3095,7 +3106,7 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
msgstr ""
@@ -3129,7 +3140,7 @@ msgid "Building"
msgstr ""
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
msgstr ""
@@ -3198,7 +3209,7 @@ msgid "Variants"
msgstr ""
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
msgstr ""
@@ -3290,19 +3301,19 @@ msgstr ""
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
msgstr ""
@@ -3314,56 +3325,67 @@ msgstr ""
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr ""
-
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr ""
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
msgstr ""
@@ -3469,101 +3491,102 @@ msgstr ""
msgid "Remove filter"
msgstr "フィルタを削除"
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
msgstr "フィルタを選択"
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
msgstr "フィルタ"
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
msgstr "値"
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
msgstr "フィルタの値を選択"
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
msgstr "フィルタを追加"
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
msgstr "表フィルタ"
@@ -3596,7 +3619,7 @@ msgstr ""
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
msgstr ""
@@ -3694,7 +3717,7 @@ msgstr ""
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
msgstr ""
@@ -3718,8 +3741,8 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
msgstr ""
@@ -3748,7 +3771,7 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
msgstr ""
@@ -3924,7 +3947,7 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
msgstr ""
@@ -4016,11 +4039,11 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
msgstr ""
@@ -4054,26 +4077,26 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
msgstr ""
@@ -4139,7 +4162,7 @@ msgid "Filter by part active status"
msgstr "有効なパーツでフィルタ"
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
msgstr ""
@@ -4211,31 +4234,63 @@ msgstr "仮想部品でフィルタ"
msgid "Not Virtual"
msgstr "仮想部品ではない"
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
@@ -4306,10 +4361,6 @@ msgstr ""
msgid "Author"
msgstr ""
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr ""
-
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
msgstr ""
@@ -4479,7 +4530,7 @@ msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
msgstr ""
@@ -4869,155 +4920,243 @@ msgstr ""
msgid "Edit user"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
msgstr ""
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
+
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
msgstr ""
diff --git a/src/frontend/src/locales/ko/messages.po b/src/frontend/src/locales/ko/messages.po
index c2187b065ed2..708c67763e89 100644
--- a/src/frontend/src/locales/ko/messages.po
+++ b/src/frontend/src/locales/ko/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: ko\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -53,8 +53,8 @@ msgstr ""
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
@@ -274,26 +274,26 @@ msgstr ""
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
msgstr ""
@@ -308,7 +308,7 @@ msgstr ""
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
msgstr ""
@@ -316,8 +316,8 @@ msgstr ""
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
msgstr ""
@@ -398,7 +398,7 @@ msgid "Delete item"
msgstr ""
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
msgstr ""
@@ -416,7 +416,7 @@ msgid "Read More"
msgstr ""
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
msgstr ""
@@ -458,11 +458,19 @@ msgid "Scan QR code"
msgstr ""
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
msgstr ""
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
msgstr ""
@@ -702,7 +710,7 @@ msgstr ""
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr ""
@@ -766,8 +774,8 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
msgstr ""
@@ -777,17 +785,17 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
msgstr ""
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
msgstr ""
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
@@ -826,12 +834,12 @@ msgid "No results available for search query"
msgstr ""
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
msgstr ""
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
msgstr ""
@@ -861,88 +869,96 @@ msgid "Part Parameter Templates"
msgstr ""
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
msgstr ""
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
msgstr ""
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
msgstr ""
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
msgstr ""
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
msgstr ""
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
msgstr ""
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
msgstr ""
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
msgstr ""
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
msgstr ""
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
msgstr ""
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
msgstr ""
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
msgstr ""
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
msgstr ""
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
msgstr ""
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
msgstr ""
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
@@ -950,79 +966,79 @@ msgstr ""
msgid "Purchase Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
msgstr ""
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
msgstr ""
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
msgstr ""
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
msgstr ""
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
msgstr ""
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
msgstr ""
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
msgstr ""
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
msgstr ""
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
msgstr ""
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
msgstr ""
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
msgstr ""
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
msgstr ""
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
msgstr ""
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
@@ -1038,8 +1054,8 @@ msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
msgstr ""
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -2435,7 +2442,7 @@ msgid "Actions for {0}"
msgstr ""
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
msgstr ""
@@ -2496,7 +2503,7 @@ msgid "The history is kept in this browser's local storage. So it won't be share
msgstr ""
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
msgstr ""
@@ -2828,7 +2835,7 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
msgstr ""
@@ -2872,7 +2879,11 @@ msgstr ""
msgid "Go to the start page"
msgstr ""
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
+
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
msgstr ""
@@ -2916,7 +2927,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
msgstr ""
@@ -2926,7 +2937,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
msgstr ""
@@ -2999,7 +3010,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
msgstr ""
@@ -3095,7 +3106,7 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
msgstr ""
@@ -3129,7 +3140,7 @@ msgid "Building"
msgstr ""
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
msgstr ""
@@ -3198,7 +3209,7 @@ msgid "Variants"
msgstr ""
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
msgstr ""
@@ -3290,19 +3301,19 @@ msgstr ""
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
msgstr ""
@@ -3314,56 +3325,67 @@ msgstr ""
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr ""
-
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr ""
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
msgstr ""
@@ -3469,101 +3491,102 @@ msgstr ""
msgid "Remove filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
msgstr ""
@@ -3596,7 +3619,7 @@ msgstr ""
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
msgstr ""
@@ -3694,7 +3717,7 @@ msgstr ""
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
msgstr ""
@@ -3718,8 +3741,8 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
msgstr ""
@@ -3748,7 +3771,7 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
msgstr ""
@@ -3924,7 +3947,7 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
msgstr ""
@@ -4016,11 +4039,11 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
msgstr ""
@@ -4054,26 +4077,26 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
msgstr ""
@@ -4139,7 +4162,7 @@ msgid "Filter by part active status"
msgstr ""
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
msgstr ""
@@ -4211,31 +4234,63 @@ msgstr ""
msgid "Not Virtual"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
@@ -4306,10 +4361,6 @@ msgstr ""
msgid "Author"
msgstr ""
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr ""
-
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
msgstr ""
@@ -4479,7 +4530,7 @@ msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
msgstr ""
@@ -4869,155 +4920,243 @@ msgstr ""
msgid "Edit user"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
msgstr ""
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
+
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
msgstr ""
diff --git a/src/frontend/src/locales/nl/messages.po b/src/frontend/src/locales/nl/messages.po
index ff93f58aa42d..08da4772be8e 100644
--- a/src/frontend/src/locales/nl/messages.po
+++ b/src/frontend/src/locales/nl/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: nl\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:26\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -53,8 +53,8 @@ msgstr ""
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
@@ -274,26 +274,26 @@ msgstr ""
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
msgstr ""
@@ -308,7 +308,7 @@ msgstr ""
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
msgstr ""
@@ -316,8 +316,8 @@ msgstr ""
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
msgstr ""
@@ -398,7 +398,7 @@ msgid "Delete item"
msgstr ""
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
msgstr ""
@@ -416,7 +416,7 @@ msgid "Read More"
msgstr ""
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
msgstr ""
@@ -458,11 +458,19 @@ msgid "Scan QR code"
msgstr ""
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
msgstr ""
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
msgstr ""
@@ -702,7 +710,7 @@ msgstr ""
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr ""
@@ -766,8 +774,8 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
msgstr ""
@@ -777,17 +785,17 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
msgstr ""
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
msgstr ""
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
@@ -826,12 +834,12 @@ msgid "No results available for search query"
msgstr ""
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
msgstr ""
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
msgstr ""
@@ -861,88 +869,96 @@ msgid "Part Parameter Templates"
msgstr ""
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
msgstr ""
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
msgstr ""
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
msgstr ""
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
msgstr ""
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
msgstr ""
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
msgstr ""
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
msgstr ""
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
msgstr ""
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
msgstr ""
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
msgstr ""
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
msgstr ""
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
msgstr ""
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
msgstr ""
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
msgstr ""
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
msgstr ""
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
@@ -950,79 +966,79 @@ msgstr ""
msgid "Purchase Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
msgstr ""
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
msgstr ""
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
msgstr "Verkooporder"
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
msgstr "Verkooporders"
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
msgstr "Verzending verkooporder"
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
msgstr "Verzendingen verkooporders"
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
msgstr "Retourorder"
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
msgstr "Retourorders"
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
msgstr ""
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
msgstr ""
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
msgstr ""
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
msgstr ""
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
msgstr ""
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
msgstr ""
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
msgstr ""
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
@@ -1038,8 +1054,8 @@ msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
msgstr ""
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -2435,7 +2442,7 @@ msgid "Actions for {0}"
msgstr ""
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
msgstr ""
@@ -2496,7 +2503,7 @@ msgid "The history is kept in this browser's local storage. So it won't be share
msgstr ""
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
msgstr ""
@@ -2828,7 +2835,7 @@ msgstr ""
msgid "Build Orders"
msgstr "Productieorders"
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
msgstr ""
@@ -2872,7 +2879,11 @@ msgstr ""
msgid "Go to the start page"
msgstr ""
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
+
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
msgstr ""
@@ -2916,7 +2927,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
msgstr "Bijlagen"
@@ -2926,7 +2937,7 @@ msgstr "Bijlagen"
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
msgstr "Opmerkingen"
@@ -2999,7 +3010,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
msgstr ""
@@ -3095,7 +3106,7 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
msgstr ""
@@ -3129,7 +3140,7 @@ msgid "Building"
msgstr ""
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
msgstr ""
@@ -3198,7 +3209,7 @@ msgid "Variants"
msgstr ""
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
msgstr ""
@@ -3290,19 +3301,19 @@ msgstr "Voltooide Verzendingen"
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
msgstr ""
@@ -3314,56 +3325,67 @@ msgstr ""
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr ""
-
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr ""
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
msgstr ""
@@ -3469,101 +3491,102 @@ msgstr ""
msgid "Remove filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
msgstr ""
@@ -3596,7 +3619,7 @@ msgstr ""
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
msgstr ""
@@ -3694,7 +3717,7 @@ msgstr ""
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
msgstr ""
@@ -3718,8 +3741,8 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
msgstr ""
@@ -3748,7 +3771,7 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
msgstr ""
@@ -3924,7 +3947,7 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
msgstr "Status"
@@ -4016,11 +4039,11 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
msgstr ""
@@ -4054,26 +4077,26 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
msgstr ""
@@ -4139,7 +4162,7 @@ msgid "Filter by part active status"
msgstr ""
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
msgstr ""
@@ -4211,31 +4234,63 @@ msgstr ""
msgid "Not Virtual"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
@@ -4306,10 +4361,6 @@ msgstr ""
msgid "Author"
msgstr ""
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr ""
-
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
msgstr ""
@@ -4479,7 +4530,7 @@ msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
msgstr ""
@@ -4869,155 +4920,243 @@ msgstr ""
msgid "Edit user"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
msgstr "Voorraadartikel is toegewezen aan een verkooporder"
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
msgstr ""
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
+
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
msgstr ""
diff --git a/src/frontend/src/locales/no/messages.po b/src/frontend/src/locales/no/messages.po
index 48e4bf28e95d..64739c200b1c 100644
--- a/src/frontend/src/locales/no/messages.po
+++ b/src/frontend/src/locales/no/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: no\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:26\n"
"Last-Translator: \n"
"Language-Team: Norwegian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -53,8 +53,8 @@ msgstr "Oppdater"
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
@@ -274,26 +274,26 @@ msgstr "Status: <0>arbeider0> ({0}), <1>utvidelser1>{1}"
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
msgstr "Feil"
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
msgstr "Søk"
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
msgstr "Laster"
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
msgstr "Ingen resultater funnet"
@@ -308,7 +308,7 @@ msgstr ""
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
msgstr "Fjern"
@@ -316,8 +316,8 @@ msgstr "Fjern"
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
msgstr "Avbryt"
@@ -398,7 +398,7 @@ msgid "Delete item"
msgstr "Slett element"
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
msgstr "Dupliser"
@@ -416,7 +416,7 @@ msgid "Read More"
msgstr "Les mer"
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
msgstr "Ukjent feil"
@@ -458,11 +458,19 @@ msgid "Scan QR code"
msgstr "Skann QR-kode"
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
msgstr "Ja"
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
msgstr "Nei"
@@ -702,7 +710,7 @@ msgstr "Kontoinnstillinger"
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr "Systeminnstillinger"
@@ -766,8 +774,8 @@ msgstr "Om"
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
msgstr "Varlser"
@@ -777,17 +785,17 @@ msgstr "Du har ingen uleste varsler."
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
msgstr "Varsel"
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
msgstr "Merk som lest"
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
@@ -826,12 +834,12 @@ msgid "No results available for search query"
msgstr "Ingen resultater tilgjengelig for søk"
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
msgstr "Lagerplasseringer"
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
msgstr "Ukjent modell: {model}"
@@ -861,88 +869,96 @@ msgid "Part Parameter Templates"
msgstr "Maler for Delparameter"
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
msgstr "Leverandørdel"
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
msgstr "Leverandørdeler"
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
msgstr "Produsentdel"
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
msgstr "Produsentdeler"
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
msgstr "Delkategori"
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
msgstr "Lagervare"
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
msgstr "Lagervarer"
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
msgstr "Lagerplassering"
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
msgstr "Lagerhistorikk"
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
msgstr "Lagerhistorikk"
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
msgstr "Produksjon"
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
msgstr "Produksjoner"
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
msgstr "Firma"
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
msgstr "Firma"
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
msgstr "Prosjektkode"
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
msgstr "Prosjektkoder"
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
msgstr "Innkjøpsordre"
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
@@ -950,79 +966,79 @@ msgstr "Innkjøpsordre"
msgid "Purchase Orders"
msgstr "Innkjøpsordrer"
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
msgstr "Ordrelinje for innkjøpsordre"
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
msgstr "Ordrelinjer for innkjøpsordre"
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
msgstr "Salgsordre"
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
msgstr "Salgsordrer"
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
msgstr "Salgsordreforsendelse"
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
msgstr "Salgsordreforsendelser"
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
msgstr "Returordre"
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
msgstr "Returordrer"
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
msgstr "Adresse"
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
msgstr "Adresser"
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
msgstr "Kontakt"
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
msgstr "Kontakter"
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
msgstr "Eier"
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
msgstr "Eiere"
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
msgstr "Bruker"
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
@@ -1038,8 +1054,8 @@ msgstr "Forsendelse"
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
msgstr "Lagerbeholdning"
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -2435,7 +2442,7 @@ msgid "Actions for {0}"
msgstr "Handlinger for {0}"
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
msgstr "Tell"
@@ -2496,7 +2503,7 @@ msgid "The history is kept in this browser's local storage. So it won't be share
msgstr "Historien ligger i denne nettleserens lokale lagringsplass. Så den vil ikke bli delt med andre brukere eller andre enheter, men er vedvarende ved gjennom nyinnlasting. Du kan velge elementer i historien for å utføre handlinger på dem. For å legge til elementer, skan/skriv dem inn i Input området."
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
msgstr "Logg"
@@ -2828,7 +2835,7 @@ msgstr "Lagertelling"
msgid "Build Orders"
msgstr "Produksjonsordrer"
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
msgstr "Bytt til brukerinnstilling"
@@ -2872,7 +2879,11 @@ msgstr "Beklager, denne siden er ikke kjent eller ble flyttet."
msgid "Go to the start page"
msgstr "Gå til startsiden"
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
+
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
msgstr "Marker som ulest"
@@ -2916,7 +2927,7 @@ msgstr "Underordnede Produksjonsordrer"
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
msgstr "Vedlegg"
@@ -2926,7 +2937,7 @@ msgstr "Vedlegg"
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
msgstr "Notater"
@@ -2999,7 +3010,7 @@ msgstr "Produksjonsordre-handlinger"
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
msgstr "Detaljer"
@@ -3095,7 +3106,7 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
msgstr "På lager"
@@ -3129,7 +3140,7 @@ msgid "Building"
msgstr "Produseres"
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
msgstr "Kategori"
@@ -3198,7 +3209,7 @@ msgid "Variants"
msgstr "Varianter"
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
msgstr "Tildelinger"
@@ -3290,19 +3301,19 @@ msgstr "Fullførte forsendelser"
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
msgstr "Sporing av lager"
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
msgstr "Testdata"
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
msgstr "Installerte artikler"
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
msgstr "Underordnede artikler"
@@ -3314,56 +3325,67 @@ msgstr "Underordnede artikler"
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
msgstr "Lagerhandlinger"
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
msgstr "Tell beholdning"
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
msgstr "Legg til"
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
msgstr "Legg til lager"
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
msgstr "Fjern lager"
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
msgstr "Overfør"
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
msgstr "Overfør lager"
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr "Dupliser lagervare"
-
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr "Dupliser lagervare"
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr "Dato"
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
msgstr "Måldato"
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
msgstr "Valuta"
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
msgstr "Total pris"
@@ -3469,101 +3491,102 @@ msgstr "Vis forfalte ordrer"
msgid "Remove filter"
msgstr "Fjern filter"
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
msgstr "Velg filter"
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
msgstr "Filter"
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
msgstr "Verdi"
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
msgstr "Velg filterverdi"
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
msgstr "Tabellfiltre"
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
msgstr "Legg til filter"
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
msgstr "Fjern filtre"
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
msgstr "Ingen poster funnet"
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
msgstr "Serveren returnerte feil datatype"
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
msgstr "Ugyldig forespørsel"
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
msgstr "Uautorisert"
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
msgstr "Forbudt"
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
msgstr "Ikke funnet"
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
msgstr "Slett valgte oppføringer"
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
msgstr "Er du sikker på at du vil slette valgte oppføringer?"
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
msgstr "Denne handlingen kan ikke angres!"
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
msgstr "Slettede oppføringer"
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
msgstr "Oppføringer slettet"
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
msgstr "Kunne ikke slette oppføringer"
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
msgstr "Strekkodehandlinger"
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
msgstr "Utskriftshandlinger"
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
msgstr "Oppdater data"
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
msgstr "Tabellfiltre"
@@ -3596,7 +3619,7 @@ msgstr "Inkluderer variantbeholdning"
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
msgstr "Lagerinformasjon"
@@ -3694,7 +3717,7 @@ msgstr "Er du sikker på at du vil fjerne dette BOM-elementet?"
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
msgstr "Aktiv"
@@ -3718,8 +3741,8 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
msgstr "Tilgjengelig"
@@ -3748,7 +3771,7 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
msgstr "Ingen lagerbeholdning tilgjengelig"
@@ -3924,7 +3947,7 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
msgstr "Status"
@@ -4016,11 +4039,11 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
msgstr "Alder"
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
msgstr "Melding"
@@ -4054,26 +4077,26 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
msgstr "Rediger del-parameter"
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
msgstr "Slett del-parameter"
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
msgstr "Legg til parameter"
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
msgstr "Inkluder varianter"
@@ -4139,7 +4162,7 @@ msgid "Filter by part active status"
msgstr "Filtrer etter del aktiv-status"
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
msgstr "Sammenstilling"
@@ -4211,31 +4234,63 @@ msgstr "Filtrer etter deler som er virtuelle"
msgid "Not Virtual"
msgstr "Ikke virtuell"
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
@@ -4306,10 +4361,6 @@ msgstr "Informasjon om utvidelse"
msgid "Author"
msgstr "Forfatter"
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr "Dato"
-
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
msgstr "Informasjon om pakken"
@@ -4479,7 +4530,7 @@ msgid "Sample"
msgstr "Eksempel"
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
msgstr "Installert"
@@ -4869,155 +4920,243 @@ msgstr "Bruker lagt til"
msgid "Edit user"
msgstr "Rediger bruker"
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
msgstr "Denne lagervaren er i produksjon"
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
msgstr "Denne lagervaren har blitt tildelt en salgsordre"
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
msgstr "Denne lagervaren har blitt tilordnet en kunde"
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
msgstr "Denne lagervaren er montert i en annen lagervare"
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
msgstr "Denne lagervaren har blitt konsumert av en produksjonsordre"
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
msgstr "Denne lagervaren har utløpt"
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
msgstr "Denne lagervaren er gammel"
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
msgstr "Denne lagervaren er i sin helhet tilordnet"
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
msgstr "Denne lagervaren er delvis tilordnet"
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
msgstr "Denne lagervaren er oppbrukt"
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
msgstr "Vis lagerbeholdning for aktive deler"
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
msgstr "Filtrer etter lagerstatus"
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
msgstr "Vis lagerbeholdning for sammensatte deler"
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
msgstr "Tildelt"
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
msgstr "Vis elementer som har blitt tildelt"
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
msgstr "Vis elementer som er tilgjengelige"
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
msgstr "Inkluder underplasseringer"
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
msgstr "Inkluder lager i underplasseringer"
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
msgstr "Oppbrukt"
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
msgstr "Vis oppbrukte lagervarer"
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
msgstr "Vis elementer som er på lager"
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
msgstr "Under produksjon"
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
msgstr "Vis elementer som er under produksjon"
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
msgstr "Inkluder lagervarer for variantdeler"
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
msgstr "Vis lagervarer som er installert i andre elementer"
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
msgstr "Sendt til kunde"
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
msgstr "Vis elementer som er sendt til en kunde"
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
msgstr "Er serialisert"
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
msgstr "Vis elementer som har et serienummer"
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
msgstr "Har batchkode"
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
msgstr "Vis elementer som har en batchkode"
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
msgstr "Spores"
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
msgstr "Vis sporede deler"
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
msgstr "Har innkjøpspris"
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
msgstr "Vis elementer som har innkjøpspris"
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
msgstr "Ekstern plassering"
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
msgstr "Vis elementer ved en ekstern plassering"
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
+
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
msgstr "Inkluder underkategorier i resultatene"
diff --git a/src/frontend/src/locales/pl/messages.po b/src/frontend/src/locales/pl/messages.po
index 7346095d5afa..1b376184a16e 100644
--- a/src/frontend/src/locales/pl/messages.po
+++ b/src/frontend/src/locales/pl/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: pl\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:26\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
@@ -53,8 +53,8 @@ msgstr ""
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
@@ -274,26 +274,26 @@ msgstr ""
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
msgstr ""
@@ -308,7 +308,7 @@ msgstr ""
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
msgstr ""
@@ -316,8 +316,8 @@ msgstr ""
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
msgstr ""
@@ -398,7 +398,7 @@ msgid "Delete item"
msgstr ""
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
msgstr ""
@@ -416,7 +416,7 @@ msgid "Read More"
msgstr ""
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
msgstr ""
@@ -458,11 +458,19 @@ msgid "Scan QR code"
msgstr ""
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
msgstr ""
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
msgstr ""
@@ -702,7 +710,7 @@ msgstr ""
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr ""
@@ -766,8 +774,8 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
msgstr ""
@@ -777,17 +785,17 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
msgstr ""
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
msgstr ""
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
@@ -826,12 +834,12 @@ msgid "No results available for search query"
msgstr ""
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
msgstr ""
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
msgstr ""
@@ -861,88 +869,96 @@ msgid "Part Parameter Templates"
msgstr ""
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
msgstr ""
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
msgstr ""
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
msgstr ""
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
msgstr ""
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
msgstr ""
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
msgstr ""
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
msgstr ""
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
msgstr ""
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
msgstr ""
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
msgstr ""
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
msgstr ""
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
msgstr ""
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
msgstr ""
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
msgstr ""
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
msgstr ""
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
@@ -950,79 +966,79 @@ msgstr ""
msgid "Purchase Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
msgstr ""
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
msgstr ""
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
msgstr ""
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
msgstr ""
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
msgstr ""
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
msgstr ""
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
msgstr ""
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
msgstr ""
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
msgstr ""
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
msgstr ""
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
msgstr ""
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
msgstr ""
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
msgstr ""
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
@@ -1038,8 +1054,8 @@ msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
msgstr ""
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -2435,7 +2442,7 @@ msgid "Actions for {0}"
msgstr ""
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
msgstr ""
@@ -2496,7 +2503,7 @@ msgid "The history is kept in this browser's local storage. So it won't be share
msgstr ""
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
msgstr ""
@@ -2828,7 +2835,7 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
msgstr ""
@@ -2872,7 +2879,11 @@ msgstr ""
msgid "Go to the start page"
msgstr ""
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
+
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
msgstr ""
@@ -2916,7 +2927,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
msgstr ""
@@ -2926,7 +2937,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
msgstr ""
@@ -2999,7 +3010,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
msgstr ""
@@ -3095,7 +3106,7 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
msgstr ""
@@ -3129,7 +3140,7 @@ msgid "Building"
msgstr ""
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
msgstr ""
@@ -3198,7 +3209,7 @@ msgid "Variants"
msgstr ""
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
msgstr ""
@@ -3290,19 +3301,19 @@ msgstr ""
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
msgstr ""
@@ -3314,56 +3325,67 @@ msgstr ""
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr ""
-
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr ""
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
msgstr ""
@@ -3469,101 +3491,102 @@ msgstr ""
msgid "Remove filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
msgstr ""
@@ -3596,7 +3619,7 @@ msgstr ""
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
msgstr ""
@@ -3694,7 +3717,7 @@ msgstr ""
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
msgstr ""
@@ -3718,8 +3741,8 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
msgstr ""
@@ -3748,7 +3771,7 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
msgstr ""
@@ -3924,7 +3947,7 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
msgstr ""
@@ -4016,11 +4039,11 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
msgstr ""
@@ -4054,26 +4077,26 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
msgstr ""
@@ -4139,7 +4162,7 @@ msgid "Filter by part active status"
msgstr ""
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
msgstr ""
@@ -4211,31 +4234,63 @@ msgstr ""
msgid "Not Virtual"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
@@ -4306,10 +4361,6 @@ msgstr ""
msgid "Author"
msgstr ""
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr ""
-
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
msgstr ""
@@ -4479,7 +4530,7 @@ msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
msgstr ""
@@ -4869,155 +4920,243 @@ msgstr ""
msgid "Edit user"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
msgstr ""
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
+
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
msgstr ""
diff --git a/src/frontend/src/locales/pt/messages.po b/src/frontend/src/locales/pt/messages.po
index 6f4414016194..8c74d9c79d3a 100644
--- a/src/frontend/src/locales/pt/messages.po
+++ b/src/frontend/src/locales/pt/messages.po
@@ -8,13 +8,13 @@ msgstr ""
"Language: pt\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:26\n"
"Last-Translator: \n"
-"Language-Team: Portuguese, Brazilian\n"
+"Language-Team: Portuguese\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
-"X-Crowdin-Language: pt-BR\n"
+"X-Crowdin-Language: pt-PT\n"
"X-Crowdin-File: /[inventree.InvenTree] l10/src/frontend/src/locales/en/messages.po\n"
"X-Crowdin-File-ID: 205\n"
@@ -25,7 +25,7 @@ msgstr "Título"
#: src/components/forms/ApiForm.tsx:132
#: src/functions/forms.tsx:259
msgid "Form Error"
-msgstr "Erro no formulário"
+msgstr "Erro de formulário"
#: src/components/forms/ApiForm.tsx:323
#: src/components/widgets/MarkdownEditor.tsx:146
@@ -34,7 +34,7 @@ msgstr "Sucesso"
#: src/components/forms/ApiForm.tsx:396
msgid "Form Errors Exist"
-msgstr "Há erros de formulário"
+msgstr "Existem erros no formulário"
#: src/components/forms/ApiForm.tsx:451
#: src/components/images/DetailsImage.tsx:223
@@ -53,12 +53,12 @@ msgstr "Atualizar"
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
-msgstr "Excluir"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:48
#: src/components/forms/AuthenticationForm.tsx:74
@@ -68,11 +68,11 @@ msgstr "Excluir"
#: src/components/forms/AuthenticationForm.tsx:50
msgid "Login successful"
-msgstr "Acesso bem-sucedido"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:51
msgid "Welcome back!"
-msgstr "Bem-vindo(a) de volta!"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:53
#~ msgid "Login successfull"
@@ -80,14 +80,14 @@ msgstr "Bem-vindo(a) de volta!"
#: src/components/forms/AuthenticationForm.tsx:58
msgid "Login failed"
-msgstr "Falha ao acessar"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:59
#: src/components/forms/AuthenticationForm.tsx:79
#: src/components/forms/AuthenticationForm.tsx:216
#: src/functions/auth.tsx:116
msgid "Check your input and try again."
-msgstr "Verifique sua entrada e tente novamente."
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:65
#: src/functions/auth.tsx:74
@@ -97,46 +97,46 @@ msgstr "Verifique sua entrada e tente novamente."
#: src/components/forms/AuthenticationForm.tsx:70
#: src/functions/auth.tsx:107
msgid "Mail delivery successful"
-msgstr "Envio de e-mail concluído"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:71
msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
-msgstr "Verifique sua caixa de entrada para o link de acesso. Se você tiver uma conta, você receberá um link de acesso. Também verifique o spam."
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:78
#: src/components/forms/AuthenticationForm.tsx:215
msgid "Input error"
-msgstr "Erro de entrada"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:98
msgid "Or continue with other methods"
-msgstr "Ou continue com outros métodos"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:109
#: src/components/forms/AuthenticationForm.tsx:233
msgid "Username"
-msgstr "Nome de usuário"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:110
#: src/components/forms/AuthenticationForm.tsx:234
msgid "Your username"
-msgstr "Seu nome de usuário"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:115
#: src/components/forms/AuthenticationForm.tsx:246
#: src/pages/Auth/Set-Password.tsx:106
msgid "Password"
-msgstr "Senha"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:116
#: src/components/forms/AuthenticationForm.tsx:247
msgid "Your password"
-msgstr "Sua senha"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:128
#: src/pages/Auth/Reset.tsx:26
msgid "Reset password"
-msgstr "Redefinir senha"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:131
#~ msgid "Log in"
@@ -151,71 +151,71 @@ msgstr "Redefinir senha"
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
msgid "Email"
-msgstr "Email"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:138
#: src/pages/Auth/Reset.tsx:32
#: src/pages/Auth/Set-Password.tsx:107
msgid "We will send you a link to login - if you are registered"
-msgstr "Enviaremos um link para fazer o acesso - se você estiver registrado"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:154
msgid "Send me an email"
-msgstr "Me envie um e-mail"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:156
msgid "Use username and password"
-msgstr "Usar nome de usuário e senha"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:165
msgid "Log In"
-msgstr "Entrar"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:167
msgid "Send Email"
-msgstr "Enviar E-mail"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:196
msgid "Registration successful"
-msgstr "Cadastrado com sucesso"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:197
msgid "Please confirm your email address to complete the registration"
-msgstr "Por favor, confirme seu endereço de e-mail para concluir o registro"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:240
msgid "This will be used for a confirmation"
-msgstr "Isto será usado para uma confirmação"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:252
msgid "Password repeat"
-msgstr "Repetir senha"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:253
msgid "Repeat password"
-msgstr "Repita a senha"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:265
#: src/components/forms/AuthenticationForm.tsx:310
msgid "Register"
-msgstr "Registrar"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:271
msgid "Or use SSO"
-msgstr "Ou use SSO"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:302
msgid "Don't have an account?"
-msgstr "Não possui uma conta?"
+msgstr ""
#: src/components/forms/AuthenticationForm.tsx:321
msgid "Go back to login"
-msgstr "Voltar ao login"
+msgstr ""
#: src/components/forms/HostOptionsForm.tsx:36
#: src/components/forms/HostOptionsForm.tsx:66
msgid "Host"
-msgstr "Servidor"
+msgstr ""
#: src/components/forms/HostOptionsForm.tsx:42
#: src/components/forms/HostOptionsForm.tsx:69
@@ -229,44 +229,44 @@ msgstr "Servidor"
#: src/tables/settings/GroupTable.tsx:103
#: src/tables/settings/PendingTasksTable.tsx:26
msgid "Name"
-msgstr "Nome"
+msgstr ""
#: src/components/forms/HostOptionsForm.tsx:74
msgid "No one here..."
-msgstr "Ninguém aqui..."
+msgstr ""
#: src/components/forms/HostOptionsForm.tsx:85
msgid "Add Host"
-msgstr "Adicionar Host"
+msgstr ""
#: src/components/forms/HostOptionsForm.tsx:89
#: src/components/widgets/MarkdownEditor.tsx:73
msgid "Save"
-msgstr "Salvar"
+msgstr ""
#: src/components/forms/InstanceOptions.tsx:43
msgid "Select destination instance"
-msgstr "Selecionar instância de destino"
+msgstr ""
#: src/components/forms/InstanceOptions.tsx:71
msgid "Edit possible host options"
-msgstr "Editar possíveis opções de servidor"
+msgstr ""
#: src/components/forms/InstanceOptions.tsx:98
msgid "Version: {0}"
-msgstr "Versão: {0}"
+msgstr ""
#: src/components/forms/InstanceOptions.tsx:100
msgid "API:{0}"
-msgstr "API:{0}"
+msgstr ""
#: src/components/forms/InstanceOptions.tsx:102
msgid "Name: {0}"
-msgstr "Nome: {0}"
+msgstr ""
#: src/components/forms/InstanceOptions.tsx:104
msgid "State: <0>worker0> ({0}), <1>plugins1>{1}"
-msgstr "Estado: <0>funcionário0> ({0}), <1>extensões1>{1}"
+msgstr ""
#: src/components/forms/fields/ApiFormField.tsx:271
#: src/components/nav/SearchDrawer.tsx:411
@@ -274,346 +274,354 @@ msgstr "Estado: <0>funcionário0> ({0}), <1>extensões1>{1}"
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
-msgstr "Erro"
+msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
-msgstr "Buscar"
+msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
-msgstr "Carregando"
+msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
-msgstr "Nenhum resultado encontrado"
+msgstr ""
#: src/components/images/DetailsImage.tsx:61
msgid "Remove Image"
-msgstr "Remover Imagem"
+msgstr ""
#: src/components/images/DetailsImage.tsx:64
msgid "Remove the associated image from this item?"
-msgstr "Remover imagem associada a este item?"
+msgstr ""
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
-msgstr "Remover"
+msgstr ""
#: src/components/images/DetailsImage.tsx:67
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
-msgstr "Cancelar"
+msgstr ""
#: src/components/images/DetailsImage.tsx:95
msgid "Drag and drop to upload"
-msgstr "Arraste e solte para carregar"
+msgstr ""
#: src/components/images/DetailsImage.tsx:98
msgid "Click to select file(s)"
-msgstr "Clique para selecionar o(s) arquivo(s)"
+msgstr ""
#: src/components/images/DetailsImage.tsx:220
msgid "Clear"
-msgstr "Limpar"
+msgstr ""
#: src/components/images/DetailsImage.tsx:252
msgid "Select image"
-msgstr "Selecionar imagem"
+msgstr ""
#: src/components/images/DetailsImage.tsx:263
msgid "Select from existing images"
-msgstr "Selecionar de imagens existentes"
+msgstr ""
#: src/components/images/DetailsImage.tsx:273
msgid "Upload new image"
-msgstr "Carregar nova imagem"
+msgstr ""
#: src/components/images/DetailsImage.tsx:279
msgid "Upload Image"
-msgstr "Enviar Imagem"
+msgstr ""
#: src/components/images/DetailsImage.tsx:292
msgid "Delete image"
-msgstr "Excluir imagem"
+msgstr ""
#: src/components/images/Thumbnail.tsx:14
#: src/components/images/Thumbnail.tsx:51
msgid "Thumbnail"
-msgstr "Miniatura"
+msgstr ""
#: src/components/items/ActionDropdown.tsx:102
#: src/pages/build/BuildDetail.tsx:203
msgid "Barcode Actions"
-msgstr "Ações de código de barras"
+msgstr ""
#: src/components/items/ActionDropdown.tsx:119
msgid "View"
-msgstr "Visualizar"
+msgstr ""
#: src/components/items/ActionDropdown.tsx:120
msgid "View barcode"
-msgstr "Ver código de barras"
+msgstr ""
#: src/components/items/ActionDropdown.tsx:136
msgid "Link Barcode"
-msgstr "Vincular Código de Barras"
+msgstr ""
#: src/components/items/ActionDropdown.tsx:137
msgid "Link custom barcode"
-msgstr "Vincular código de barras personalizado"
+msgstr ""
#: src/components/items/ActionDropdown.tsx:153
msgid "Unlink Barcode"
-msgstr "Desvincular Código de Barras"
+msgstr ""
#: src/components/items/ActionDropdown.tsx:154
msgid "Unlink custom barcode"
-msgstr "Desvincular código de barras personalizado"
+msgstr ""
#: src/components/items/ActionDropdown.tsx:172
#: src/tables/RowActions.tsx:50
msgid "Edit"
-msgstr "Editar"
+msgstr ""
#: src/components/items/ActionDropdown.tsx:192
msgid "Delete item"
-msgstr "Apagar item"
+msgstr ""
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
-msgstr "Duplicar"
+msgstr ""
#: src/components/items/ActionDropdown.tsx:211
msgid "Duplicate item"
-msgstr "Duplicar item"
+msgstr ""
#: src/components/items/CopyButton.tsx:18
msgid "Copy to clipboard"
-msgstr "Copiar para área de transferência"
+msgstr ""
#: src/components/items/DocTooltip.tsx:94
msgid "Read More"
-msgstr "Leia Mais"
+msgstr ""
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
-msgstr "Erro desconhecido"
+msgstr ""
#: src/components/items/ErrorItem.tsx:10
msgid "An error occurred:"
-msgstr "Um erro ocorreu:"
+msgstr ""
#: src/components/items/GettingStartedCarousel.tsx:64
msgid "Read more"
-msgstr "Ler mais"
+msgstr ""
#: src/components/items/InfoItem.tsx:24
msgid "None"
-msgstr "Nenhum"
+msgstr ""
#: src/components/items/InvenTreeLogo.tsx:23
msgid "InvenTree Logo"
-msgstr "Logotipo InvenTree"
+msgstr ""
#: src/components/items/OnlyStaff.tsx:9
#: src/components/modals/AboutInvenTreeModal.tsx:44
msgid "This information is only available for staff users"
-msgstr "Esta informação só está disponível para usuários da equipe"
+msgstr ""
#: src/components/items/Placeholder.tsx:14
msgid "This feature/button/site is a placeholder for a feature that is not implemented, only partial or intended for testing."
-msgstr "Este recurso/botão/site é um supositório para um recurso que não está implementado, somente parcial ou destinado a testes."
+msgstr ""
#: src/components/items/Placeholder.tsx:17
msgid "PLH"
-msgstr "PLH"
+msgstr ""
#: src/components/items/Placeholder.tsx:31
msgid "This panel is a placeholder."
-msgstr "Este painel é um espaço reservado."
+msgstr ""
#: src/components/items/ScanButton.tsx:15
msgid "Scan QR code"
-msgstr "Escanear código QR"
+msgstr ""
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
-msgstr "Sim"
+msgstr ""
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
-msgstr "Não"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:99
msgid "Version Information"
-msgstr "Informações da Versão"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:103
msgid "Your InvenTree version status is"
-msgstr "Sua versão do InvenTree é"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:107
msgid "Development Version"
-msgstr "Versão de desenvolvimento"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:111
msgid "Up to Date"
-msgstr "Atualizado"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:115
msgid "Update Available"
-msgstr "Atualização disponível"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:125
msgid "InvenTree Version"
-msgstr "Versão do InvenTree"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:131
msgid "Commit Hash"
-msgstr "Hash do Commit"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:136
msgid "Commit Date"
-msgstr "Data do Commit"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:141
msgid "Commit Branch"
-msgstr "Ramo do Commit"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:146
#: src/components/modals/ServerInfoModal.tsx:133
msgid "API Version"
-msgstr "Versão da API"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:149
msgid "Python Version"
-msgstr "Versão do Python"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:152
msgid "Django Version"
-msgstr "Versão do Django"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:162
msgid "Links"
-msgstr "Links"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:168
msgid "InvenTree Documentation"
-msgstr "Documentação do InvenTree"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:169
msgid "View Code on GitHub"
-msgstr "Veja o código no GitHub"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:170
msgid "Credits"
-msgstr "Créditos"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:171
msgid "Mobile App"
-msgstr "Aplicativo para celular"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:172
msgid "Submit Bug Report"
-msgstr "Enviar Relatório de Erro"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:183
msgid "Copy version information"
-msgstr "Copiar informações da versão"
+msgstr ""
#: src/components/modals/AboutInvenTreeModal.tsx:192
#: src/components/modals/ServerInfoModal.tsx:147
msgid "Dismiss"
-msgstr "Dispensar"
+msgstr ""
#: src/components/modals/QrCodeModal.tsx:72
msgid "Unknown response"
-msgstr "Resposta desconhecida"
+msgstr ""
#: src/components/modals/QrCodeModal.tsx:102
#: src/pages/Index/Scan.tsx:618
msgid "Error while getting camera"
-msgstr "Erro ao obter a câmera"
+msgstr ""
#: src/components/modals/QrCodeModal.tsx:125
#: src/pages/Index/Scan.tsx:641
msgid "Error while scanning"
-msgstr "Erro ao escanear"
+msgstr ""
#: src/components/modals/QrCodeModal.tsx:139
#: src/pages/Index/Scan.tsx:655
msgid "Error while stopping"
-msgstr "Erro ao parar"
+msgstr ""
#: src/components/modals/QrCodeModal.tsx:154
#: src/defaults/menuItems.tsx:21
#: src/pages/Index/Scan.tsx:724
msgid "Scanning"
-msgstr "Escaneando"
+msgstr ""
#: src/components/modals/QrCodeModal.tsx:154
#: src/pages/Index/Scan.tsx:724
msgid "Not scanning"
-msgstr "Não está escaneando"
+msgstr ""
#: src/components/modals/QrCodeModal.tsx:159
#: src/pages/Index/Scan.tsx:730
msgid "Select Camera"
-msgstr "Selecionar Camera"
+msgstr ""
#: src/components/modals/QrCodeModal.tsx:169
#: src/pages/Index/Scan.tsx:716
msgid "Start scanning"
-msgstr "Começar a escanear"
+msgstr ""
#: src/components/modals/QrCodeModal.tsx:176
#: src/pages/Index/Scan.tsx:710
msgid "Stop scanning"
-msgstr "Parar escaneamento"
+msgstr ""
#: src/components/modals/QrCodeModal.tsx:181
msgid "No scans yet!"
-msgstr "Ainda não há escaneamentos!"
+msgstr ""
#: src/components/modals/QrCodeModal.tsx:201
msgid "Close modal"
-msgstr "Fechar o modal"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:26
#: src/pages/Index/Settings/SystemSettings.tsx:36
msgid "Server"
-msgstr "Servidor"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:32
msgid "Instance Name"
-msgstr "Nome da Instância"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:38
msgid "Database"
-msgstr "Banco de Dados"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:38
#~ msgid "Bebug Mode"
@@ -621,74 +629,74 @@ msgstr "Banco de Dados"
#: src/components/modals/ServerInfoModal.tsx:47
msgid "Debug Mode"
-msgstr "Modo de depuração"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:50
msgid "Server is running in debug mode"
-msgstr "Servidor está em execução em modo de depuração"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:57
msgid "Docker Mode"
-msgstr "Modo Docker"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:60
msgid "Server is deployed using docker"
-msgstr "O servidor está implantado usando o docker"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:66
msgid "Plugin Support"
-msgstr "Suporte a Plugins"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:71
msgid "Plugin support enabled"
-msgstr "Suporte a plugin habilitado"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:73
msgid "Plugin support disabled"
-msgstr "Suporte a plugin desabilitado"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:80
msgid "Server status"
-msgstr "Estado do servidor"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:86
msgid "Healthy"
-msgstr "Saudável"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:88
msgid "Issues detected"
-msgstr "Problemas detectados"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:97
msgid "Background Worker"
-msgstr "Trabalhador em Segundo Plano"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:101
msgid "Background worker not running"
-msgstr "Trabalhador em segundo plano não está funcionando"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:109
msgid "Email Settings"
-msgstr "Configurações de Email"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:113
msgid "Email settings not configured"
-msgstr "Email não configurado"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:121
#: src/tables/plugin/PluginListTable.tsx:185
#: src/tables/plugin/PluginListTable.tsx:310
msgid "Version"
-msgstr "Versão"
+msgstr ""
#: src/components/modals/ServerInfoModal.tsx:127
msgid "Server Version"
-msgstr "Versão do servidor"
+msgstr ""
#: src/components/nav/MainMenu.tsx:39
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:26
msgid "Settings"
-msgstr "Configurações"
+msgstr ""
#: src/components/nav/MainMenu.tsx:40
#: src/pages/Index/Profile/Profile.tsx:15
@@ -698,19 +706,19 @@ msgstr "Configurações"
#: src/components/nav/MainMenu.tsx:42
#: src/defaults/menuItems.tsx:15
msgid "Account settings"
-msgstr "Configurações de conta"
+msgstr ""
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
-msgstr "Configurações do Sistema"
+msgstr ""
#: src/components/nav/MainMenu.tsx:60
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter/Index.tsx:150
msgid "Admin Center"
-msgstr "Centro de Administração"
+msgstr ""
#: src/components/nav/MainMenu.tsx:68
#~ msgid "Current language {locale}"
@@ -718,7 +726,7 @@ msgstr "Centro de Administração"
#: src/components/nav/MainMenu.tsx:70
msgid "Logout"
-msgstr "Sair"
+msgstr ""
#: src/components/nav/MainMenu.tsx:71
#~ msgid "Switch to pseudo language"
@@ -726,121 +734,121 @@ msgstr "Sair"
#: src/components/nav/NavHoverMenu.tsx:61
msgid "Open Navigation"
-msgstr "Abrir Navegação"
+msgstr ""
#: src/components/nav/NavHoverMenu.tsx:79
msgid "View all"
-msgstr "Visualizar Tudo"
+msgstr ""
#: src/components/nav/NavHoverMenu.tsx:93
#: src/components/nav/NavHoverMenu.tsx:103
msgid "Get started"
-msgstr "Introdução"
+msgstr ""
#: src/components/nav/NavHoverMenu.tsx:96
msgid "Overview over high-level objects, functions and possible usecases."
-msgstr "Visão geral sobre objetos de alto nível, funções e possíveis usos."
+msgstr ""
#: src/components/nav/NavigationDrawer.tsx:59
msgid "Navigation"
-msgstr "Navegação"
+msgstr ""
#: src/components/nav/NavigationDrawer.tsx:62
msgid "Pages"
-msgstr "Páginas"
+msgstr ""
#: src/components/nav/NavigationDrawer.tsx:67
#: src/pages/Index/Settings/AdminCenter/Index.tsx:111
#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:41
msgid "Plugins"
-msgstr "Extensões"
+msgstr ""
#: src/components/nav/NavigationDrawer.tsx:77
msgid "Documentation"
-msgstr "Documentação"
+msgstr ""
#: src/components/nav/NavigationDrawer.tsx:80
msgid "About"
-msgstr "Sobre"
+msgstr ""
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
-msgstr "Notificações"
+msgstr ""
#: src/components/nav/NotificationDrawer.tsx:87
msgid "You have no unread notifications."
-msgstr "Você não tem notificações não lidas."
+msgstr ""
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
-msgstr "Notificação"
+msgstr ""
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
-msgstr "Marcar como lido"
+msgstr ""
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
-msgstr "Categorias de Peça"
+msgstr ""
#: src/components/nav/SearchDrawer.tsx:76
msgid "results"
-msgstr "resultados"
+msgstr ""
#: src/components/nav/SearchDrawer.tsx:336
msgid "Enter search text"
-msgstr "Digite o texto de pesquisa"
+msgstr ""
#: src/components/nav/SearchDrawer.tsx:363
msgid "Search Options"
-msgstr "Opções de pesquisa"
+msgstr ""
#: src/components/nav/SearchDrawer.tsx:366
msgid "Regex search"
-msgstr "Busca por Regex"
+msgstr ""
#: src/components/nav/SearchDrawer.tsx:376
msgid "Whole word search"
-msgstr "Pesquisa de palavras inteira"
+msgstr ""
#: src/components/nav/SearchDrawer.tsx:414
msgid "An error occurred during search query"
-msgstr "Ocorreu um erro durante a pesquisa"
+msgstr ""
#: src/components/nav/SearchDrawer.tsx:425
msgid "No results"
-msgstr "Nenhum resultado"
+msgstr ""
#: src/components/nav/SearchDrawer.tsx:428
msgid "No results available for search query"
-msgstr "Não há resultados disponíveis para a pesquisa"
+msgstr ""
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
-msgstr "Locais de estoque"
+msgstr ""
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
-msgstr "Modelo desconhecido: {model}"
+msgstr ""
#: src/components/render/ModelType.tsx:21
#: src/pages/part/PartDetail.tsx:703
#: src/tables/part/RelatedPartTable.tsx:45
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:59
msgid "Part"
-msgstr "Peça"
+msgstr ""
#: src/components/render/ModelType.tsx:22
#: src/defaults/links.tsx:28
@@ -850,187 +858,195 @@ msgstr "Peça"
#: src/pages/part/CategoryDetail.tsx:81
#: src/pages/part/PartDetail.tsx:614
msgid "Parts"
-msgstr "Peças"
+msgstr ""
#: src/components/render/ModelType.tsx:29
msgid "Part Parameter Template"
-msgstr "Modelo de Parâmetro de Peça"
+msgstr ""
#: src/components/render/ModelType.tsx:30
msgid "Part Parameter Templates"
-msgstr "Modelos de Parâmetro de Peça"
+msgstr ""
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
-msgstr "Fornecedor da Peça"
+msgstr ""
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
-msgstr "Peças do Fornecedor"
+msgstr ""
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
-msgstr "Fabricante da peça"
+msgstr ""
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
-msgstr "Peças do Fabricante"
+msgstr ""
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
-msgstr "Categoria da Peça"
+msgstr ""
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
-msgstr "Item de estoque"
+msgstr ""
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
-msgstr "Itens de Estoque"
+msgstr ""
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
-msgstr "Localização do estoque"
+msgstr ""
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
-msgstr "Histórico de estoque"
+msgstr ""
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
-msgstr "Históricos de estoque"
+msgstr ""
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
-msgstr "Produzir"
+msgstr ""
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
-msgstr "Compilações"
+msgstr ""
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
-msgstr "Empresa"
+msgstr ""
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
-msgstr "Empresas"
+msgstr ""
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
-msgstr "Código do Projeto"
+msgstr ""
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
-msgstr "Códigos de Projeto"
+msgstr ""
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
-msgstr "Pedido de Compra"
+msgstr ""
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
#: src/pages/purchasing/PurchasingIndex.tsx:20
msgid "Purchase Orders"
-msgstr "Pedidos de compra"
+msgstr ""
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
-msgstr "Linha do Pedido de Compra"
+msgstr ""
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
-msgstr "Linhas do Pedido de Compra"
+msgstr ""
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
-msgstr "Pedido de Venda"
+msgstr ""
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
-msgstr "Pedidos de vendas"
+msgstr ""
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
-msgstr "Envio do Pedido Venda"
+msgstr ""
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
-msgstr "Envios do Pedido Venda"
+msgstr ""
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
-msgstr "Pedido de Devolução"
+msgstr ""
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
-msgstr "Pedidos de Devolução"
+msgstr ""
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
-msgstr "Endereço"
+msgstr ""
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
-msgstr "Endereços"
+msgstr ""
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
-msgstr "Contato"
+msgstr ""
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
-msgstr "Contatos"
+msgstr ""
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
-msgstr "Proprietário"
+msgstr ""
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
-msgstr "Proprietários"
+msgstr ""
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
-msgstr "Usuário"
+msgstr ""
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
-msgstr "Usuários"
+msgstr ""
#: src/components/render/Order.tsx:85
msgid "Shipment"
-msgstr "Remessa"
+msgstr ""
#: src/components/render/Part.tsx:10
#: src/defaults/links.tsx:29
@@ -1038,39 +1054,39 @@ msgstr "Remessa"
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
-msgstr "Estoque"
+msgstr ""
#: src/components/render/Stock.tsx:26
msgid "Serial Number"
-msgstr "Número de Série"
+msgstr ""
#: src/components/render/Stock.tsx:28
#: src/pages/build/BuildDetail.tsx:76
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:81
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:109
msgid "Quantity"
-msgstr "Quantidade"
+msgstr ""
#: src/components/settings/SettingItem.tsx:45
#: src/components/settings/SettingItem.tsx:98
msgid "Setting updated"
-msgstr "Configurações atualizadas"
+msgstr ""
#: src/components/settings/SettingItem.tsx:46
#: src/components/settings/SettingItem.tsx:99
msgid "{0} updated successfully"
-msgstr "{0} atualizado com sucesso"
+msgstr ""
#: src/components/settings/SettingItem.tsx:54
msgid "Error editing setting"
-msgstr "Erro ao editar configuração"
+msgstr ""
#: src/components/settings/SettingItem.tsx:91
msgid "Edit Setting"
-msgstr "Editar configurações"
+msgstr ""
#: src/components/settings/SettingList.tsx:63
msgid "No settings specified"
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -1542,262 +1549,262 @@ msgstr ""
#: src/components/widgets/DisplayWidget.tsx:11
#: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:16
msgid "Display Settings"
-msgstr "Configurações de tela"
+msgstr ""
#: src/components/widgets/DisplayWidget.tsx:15
#: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:22
msgid "Color Mode"
-msgstr "Modo de cores"
+msgstr ""
#: src/components/widgets/DisplayWidget.tsx:21
#: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:32
msgid "Language"
-msgstr "Idioma"
+msgstr ""
#: src/components/widgets/FeedbackWidget.tsx:18
msgid "Something is new: Platform UI"
-msgstr "Algo novo: Interface da Plataforma"
+msgstr ""
#: src/components/widgets/FeedbackWidget.tsx:20
msgid "We are building a new UI with a modern stack. What you currently see is not fixed and will be redesigned but demonstrates the UI/UX possibilities we will have going forward."
-msgstr "Estamos construindo uma nova interface moderna de usuário. O que você vê no momento não foi corrigido e será redesenhado, mas demonstra as possibilidades de UI/UX que teremos adiante."
+msgstr ""
#: src/components/widgets/FeedbackWidget.tsx:31
msgid "Provide Feedback"
-msgstr "Forneça Avaliação"
+msgstr ""
#: src/components/widgets/GetStartedWidget.tsx:11
msgid "Getting started"
-msgstr "Iniciando"
+msgstr ""
#: src/components/widgets/MarkdownEditor.tsx:109
msgid "Failed to upload image"
-msgstr "Falha no carregamento da imagem"
+msgstr ""
#: src/components/widgets/MarkdownEditor.tsx:147
msgid "Notes saved"
-msgstr "Notas salvas"
+msgstr ""
#: src/components/widgets/MarkdownEditor.tsx:155
msgid "Failed to save notes"
-msgstr "Falha em salvar notas"
+msgstr ""
#: src/components/widgets/WidgetLayout.tsx:180
msgid "Layout"
-msgstr "Disposição"
+msgstr ""
#: src/components/widgets/WidgetLayout.tsx:186
msgid "Reset Layout"
-msgstr "Redefinir Disposição"
+msgstr ""
#: src/components/widgets/WidgetLayout.tsx:199
msgid "Stop Edit"
-msgstr "Parar Edição"
+msgstr ""
#: src/components/widgets/WidgetLayout.tsx:199
msgid "Edit Layout"
-msgstr "Editar Disposição"
+msgstr ""
#: src/components/widgets/WidgetLayout.tsx:205
msgid "Appearance"
-msgstr "Aparência"
+msgstr ""
#: src/components/widgets/WidgetLayout.tsx:217
msgid "Show Boxes"
-msgstr "Mostrar Caixas"
+msgstr ""
#: src/contexts/LanguageContext.tsx:18
msgid "Bulgarian"
-msgstr "Búlgaro"
+msgstr ""
#: src/contexts/LanguageContext.tsx:19
msgid "Czech"
-msgstr "Tcheco"
+msgstr ""
#: src/contexts/LanguageContext.tsx:20
msgid "Danish"
-msgstr "Dinamarquês"
+msgstr ""
#: src/contexts/LanguageContext.tsx:21
msgid "German"
-msgstr "Alemão"
+msgstr ""
#: src/contexts/LanguageContext.tsx:22
msgid "Greek"
-msgstr "Grego"
+msgstr ""
#: src/contexts/LanguageContext.tsx:23
msgid "English"
-msgstr "Inglês"
+msgstr ""
#: src/contexts/LanguageContext.tsx:24
msgid "Spanish"
-msgstr "Espanhol"
+msgstr ""
#: src/contexts/LanguageContext.tsx:25
msgid "Spanish (Mexican)"
-msgstr "Espanhol (Mexicano)"
+msgstr ""
#: src/contexts/LanguageContext.tsx:26
msgid "Farsi / Persian"
-msgstr "Persa"
+msgstr ""
#: src/contexts/LanguageContext.tsx:27
msgid "Finnish"
-msgstr "Finlandês"
+msgstr ""
#: src/contexts/LanguageContext.tsx:28
msgid "French"
-msgstr "Francês"
+msgstr ""
#: src/contexts/LanguageContext.tsx:29
msgid "Hebrew"
-msgstr "Hebraico"
+msgstr ""
#: src/contexts/LanguageContext.tsx:30
msgid "Hindi"
-msgstr "Hindi"
+msgstr ""
#: src/contexts/LanguageContext.tsx:31
msgid "Hungarian"
-msgstr "Húngaro"
+msgstr ""
#: src/contexts/LanguageContext.tsx:32
msgid "Italian"
-msgstr "Italiano"
+msgstr ""
#: src/contexts/LanguageContext.tsx:33
msgid "Japanese"
-msgstr "Japonês"
+msgstr ""
#: src/contexts/LanguageContext.tsx:34
msgid "Korean"
-msgstr "Coreano"
+msgstr ""
#: src/contexts/LanguageContext.tsx:35
msgid "Dutch"
-msgstr "Holandês"
+msgstr ""
#: src/contexts/LanguageContext.tsx:36
msgid "Norwegian"
-msgstr "Norueguês"
+msgstr ""
#: src/contexts/LanguageContext.tsx:37
msgid "Polish"
-msgstr "Polonês"
+msgstr ""
#: src/contexts/LanguageContext.tsx:38
msgid "Portuguese"
-msgstr "Português"
+msgstr ""
#: src/contexts/LanguageContext.tsx:39
msgid "Portuguese (Brazilian)"
-msgstr "Português (Brasileiro)"
+msgstr ""
#: src/contexts/LanguageContext.tsx:40
msgid "Russian"
-msgstr "Russo"
+msgstr ""
#: src/contexts/LanguageContext.tsx:41
msgid "Slovak"
-msgstr "Eslovaco"
+msgstr ""
#: src/contexts/LanguageContext.tsx:42
msgid "Slovenian"
-msgstr "Esloveno"
+msgstr ""
#: src/contexts/LanguageContext.tsx:43
msgid "Swedish"
-msgstr "Sueco"
+msgstr ""
#: src/contexts/LanguageContext.tsx:44
msgid "Thai"
-msgstr "Tailandês"
+msgstr ""
#: src/contexts/LanguageContext.tsx:45
msgid "Turkish"
-msgstr "Turco"
+msgstr ""
#: src/contexts/LanguageContext.tsx:46
msgid "Vietnamese"
-msgstr "Vietnamita"
+msgstr ""
#: src/contexts/LanguageContext.tsx:47
msgid "Chinese (Simplified)"
-msgstr "Chinês (Simplificado)"
+msgstr ""
#: src/contexts/LanguageContext.tsx:48
msgid "Chinese (Traditional)"
-msgstr "Chinês (Tradicional)"
+msgstr ""
#: src/defaults/dashboardItems.tsx:15
msgid "Subscribed Parts"
-msgstr "Peças inscritas"
+msgstr ""
#: src/defaults/dashboardItems.tsx:22
msgid "Subscribed Categories"
-msgstr "Categorias Inscritas"
+msgstr ""
#: src/defaults/dashboardItems.tsx:29
msgid "Latest Parts"
-msgstr "Peças mais recentes"
+msgstr ""
#: src/defaults/dashboardItems.tsx:36
msgid "BOM Waiting Validation"
-msgstr "LDM Aguardando Validação"
+msgstr ""
#: src/defaults/dashboardItems.tsx:43
msgid "Recently Updated"
-msgstr "Atualizados Recentemente"
+msgstr ""
#: src/defaults/dashboardItems.tsx:50
#: src/tables/part/PartTable.tsx:218
msgid "Low Stock"
-msgstr "Estoque Baixo"
+msgstr ""
#: src/defaults/dashboardItems.tsx:57
msgid "Depleted Stock"
-msgstr "Estoque Esgotado"
+msgstr ""
#: src/defaults/dashboardItems.tsx:64
msgid "Required for Build Orders"
-msgstr "Necessário para pedidos de produção"
+msgstr ""
#: src/defaults/dashboardItems.tsx:71
msgid "Expired Stock"
-msgstr "Estoque Expirado"
+msgstr ""
#: src/defaults/dashboardItems.tsx:78
msgid "Stale Stock"
-msgstr "Estoque Parado"
+msgstr ""
#: src/defaults/dashboardItems.tsx:85
msgid "Build Orders In Progress"
-msgstr "Pedido de Produção em Progresso"
+msgstr ""
#: src/defaults/dashboardItems.tsx:92
msgid "Overdue Build Orders"
-msgstr "Pedido de produção atrasado"
+msgstr ""
#: src/defaults/dashboardItems.tsx:99
msgid "Outstanding Purchase Orders"
-msgstr "Pedidos de Compra Pendentes"
+msgstr ""
#: src/defaults/dashboardItems.tsx:106
msgid "Overdue Purchase Orders"
-msgstr "Pedido de Compra Vencido"
+msgstr ""
#: src/defaults/dashboardItems.tsx:113
msgid "Outstanding Sales Orders"
-msgstr "Pedidos de Venda Pendentes"
+msgstr ""
#: src/defaults/dashboardItems.tsx:120
msgid "Overdue Sales Orders"
-msgstr "Pedidos de Venda Vencidos"
+msgstr ""
#: src/defaults/dashboardItems.tsx:127
msgid "Current News"
-msgstr "Notícias Atuais"
+msgstr ""
#: src/defaults/defaultHostList.tsx:8
#~ msgid "InvenTree Demo"
@@ -1809,27 +1816,27 @@ msgstr "Notícias Atuais"
#: src/defaults/links.tsx:11
msgid "Website"
-msgstr "Página Web"
+msgstr ""
#: src/defaults/links.tsx:16
msgid "GitHub"
-msgstr "GitHub"
+msgstr ""
#: src/defaults/links.tsx:21
msgid "Demo"
-msgstr "Demonstração"
+msgstr ""
#: src/defaults/links.tsx:26
#: src/defaults/menuItems.tsx:9
msgid "Home"
-msgstr "Início"
+msgstr ""
#: src/defaults/links.tsx:27
#: src/defaults/menuItems.tsx:28
#: src/pages/Index/Dashboard.tsx:19
#: src/pages/Index/Settings/UserSettings.tsx:41
msgid "Dashboard"
-msgstr "Painel de Controle"
+msgstr ""
#: src/defaults/links.tsx:31
#: src/defaults/menuItems.tsx:48
@@ -1840,7 +1847,7 @@ msgstr "Painel de Controle"
#: src/pages/purchasing/PurchaseOrderDetail.tsx:134
#: src/pages/purchasing/PurchasingIndex.tsx:52
msgid "Purchasing"
-msgstr "Comprando"
+msgstr ""
#: src/defaults/links.tsx:32
#: src/defaults/menuItems.tsx:53
@@ -1849,45 +1856,45 @@ msgstr "Comprando"
#: src/pages/sales/SalesIndex.tsx:45
#: src/pages/sales/SalesOrderDetail.tsx:105
msgid "Sales"
-msgstr "Vendas"
+msgstr ""
#: src/defaults/links.tsx:35
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:192
msgid "Playground"
-msgstr "Área de testes"
+msgstr ""
#: src/defaults/links.tsx:49
msgid "Getting Started"
-msgstr "Primeiros passos"
+msgstr ""
#: src/defaults/links.tsx:50
msgid "Getting started with InvenTree"
-msgstr "Primeiros passos com InvenTree"
+msgstr ""
#: src/defaults/links.tsx:56
msgid "API"
-msgstr "API"
+msgstr ""
#: src/defaults/links.tsx:57
msgid "InvenTree API documentation"
-msgstr "Documentação de API do InvenTree"
+msgstr ""
#: src/defaults/links.tsx:62
msgid "Developer Manual"
-msgstr "Manual do Desenvolvedor"
+msgstr ""
#: src/defaults/links.tsx:63
msgid "InvenTree developer manual"
-msgstr "Manual do desenvolvedor InvenTree"
+msgstr ""
#: src/defaults/links.tsx:68
msgid "FAQ"
-msgstr "FAQ"
+msgstr ""
#: src/defaults/links.tsx:69
msgid "Frequently asked questions"
-msgstr "Perguntas Frequentes"
+msgstr ""
#: src/defaults/links.tsx:76
#~ msgid "Instance"
@@ -1896,7 +1903,7 @@ msgstr "Perguntas Frequentes"
#: src/defaults/links.tsx:79
#: src/defaults/links.tsx:104
msgid "System Information"
-msgstr "Informação do Sistema"
+msgstr ""
#: src/defaults/links.tsx:83
#~ msgid "InvenTree"
@@ -1905,23 +1912,23 @@ msgstr "Informação do Sistema"
#: src/defaults/links.tsx:92
#: src/defaults/links.tsx:110
msgid "About InvenTree"
-msgstr "Sobre o InvenTree"
+msgstr ""
#: src/defaults/links.tsx:105
msgid "About this Inventree instance"
-msgstr "Sobre esta instância do Inventree"
+msgstr ""
#: src/defaults/links.tsx:111
msgid "About the InvenTree org"
-msgstr "Sobre a organização InvenTree"
+msgstr ""
#: src/defaults/links.tsx:116
msgid "Licenses"
-msgstr "Licenças"
+msgstr ""
#: src/defaults/links.tsx:117
msgid "Licenses for packages used by InvenTree"
-msgstr "Licenças para pacotes usados pelo InvenTree"
+msgstr ""
#: src/defaults/menuItems.tsx:7
#~ msgid "Open sourcea"
@@ -1949,7 +1956,7 @@ msgstr "Licenças para pacotes usados pelo InvenTree"
#: src/defaults/menuItems.tsx:17
msgid "User attributes and design settings."
-msgstr "Atributos de usuário e configurações de design."
+msgstr ""
#: src/defaults/menuItems.tsx:21
#~ msgid "Free for everyone"
@@ -1961,7 +1968,7 @@ msgstr "Atributos de usuário e configurações de design."
#: src/defaults/menuItems.tsx:23
msgid "View for interactive scanning and multiple actions."
-msgstr "Visualização para varredura interativa e várias ações."
+msgstr ""
#: src/defaults/menuItems.tsx:24
#~ msgid "The fluid of Smeargle’s tail secretions changes in the intensity"
@@ -2001,47 +2008,47 @@ msgstr "Visualização para varredura interativa e várias ações."
#: src/forms/AttachmentForms.tsx:57
msgid "Add File"
-msgstr "Adicionar Arquivo"
+msgstr ""
#: src/forms/AttachmentForms.tsx:57
msgid "Add Link"
-msgstr "Adicionar Link"
+msgstr ""
#: src/forms/AttachmentForms.tsx:58
msgid "File added"
-msgstr "Arquivo adicionado"
+msgstr ""
#: src/forms/AttachmentForms.tsx:58
msgid "Link added"
-msgstr "Link adicionado"
+msgstr ""
#: src/forms/AttachmentForms.tsx:99
msgid "Edit File"
-msgstr "Editar Arquivo"
+msgstr ""
#: src/forms/AttachmentForms.tsx:99
msgid "Edit Link"
-msgstr "Editar Link"
+msgstr ""
#: src/forms/AttachmentForms.tsx:100
msgid "File updated"
-msgstr "Arquivo atualizado"
+msgstr ""
#: src/forms/AttachmentForms.tsx:100
msgid "Link updated"
-msgstr "Link atualizado"
+msgstr ""
#: src/forms/AttachmentForms.tsx:124
msgid "Delete Attachment"
-msgstr "Excluir Anexo"
+msgstr ""
#: src/forms/AttachmentForms.tsx:125
msgid "Attachment deleted"
-msgstr "Anexo excluído"
+msgstr ""
#: src/forms/AttachmentForms.tsx:128
msgid "Are you sure you want to delete this attachment?"
-msgstr "Tem certeza de que deseja excluir este anexo?"
+msgstr ""
#: src/forms/CompanyForms.tsx:150
#~ msgid "Company updated"
@@ -2049,7 +2056,7 @@ msgstr "Tem certeza de que deseja excluir este anexo?"
#: src/forms/PartForms.tsx:105
msgid "Parent part category"
-msgstr "Categoria de peça parental"
+msgstr ""
#: src/forms/PartForms.tsx:106
#~ msgid "Create Part"
@@ -2065,23 +2072,23 @@ msgstr "Categoria de peça parental"
#: src/forms/StockForms.tsx:44
msgid "Add given quantity as packs instead of individual items"
-msgstr "Adicionar quantidade dada como pacotes e não itens individuais"
+msgstr ""
#: src/forms/StockForms.tsx:55
msgid "Enter initial quantity for this stock item"
-msgstr "Inserir quantidade inicial deste item de estoque"
+msgstr ""
#: src/forms/StockForms.tsx:60
msgid "Serial Numbers"
-msgstr "Números de Série"
+msgstr ""
#: src/forms/StockForms.tsx:61
msgid "Enter serial numbers for new stock (or leave blank)"
-msgstr "Insira o número de série para novo estoque (ou deixe em branco)"
+msgstr ""
#: src/forms/StockForms.tsx:110
msgid "Add Stock Item"
-msgstr "Adicionar Item do Estoque"
+msgstr ""
#: src/forms/StockForms.tsx:110
#~ msgid "Create Stock Item"
@@ -2089,15 +2096,15 @@ msgstr "Adicionar Item do Estoque"
#: src/forms/StockForms.tsx:131
msgid "Edit Stock Item"
-msgstr "Editar Item do Estoque"
+msgstr ""
#: src/forms/StockForms.tsx:132
msgid "Stock item updated"
-msgstr "Item de estoque atualizado"
+msgstr ""
#: src/forms/StockForms.tsx:140
msgid "Parent stock location"
-msgstr "Local de estoque pai"
+msgstr ""
#: src/functions/auth.tsx:34
#~ msgid "Error fetching token from server."
@@ -2113,20 +2120,20 @@ msgstr "Local de estoque pai"
#: src/functions/auth.tsx:70
msgid "Logout successful"
-msgstr "Sessão terminada"
+msgstr ""
#: src/functions/auth.tsx:71
msgid "You have been logged out"
-msgstr "Você foi desconectado"
+msgstr ""
#: src/functions/auth.tsx:108
msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too."
-msgstr "Verifique sua caixa de entrada para o link de redefinição. Isso só funciona se você tiver uma conta. Cheque no spam também."
+msgstr ""
#: src/functions/auth.tsx:115
#: src/pages/Auth/Set-Password.tsx:39
msgid "Reset failed"
-msgstr "A redefinação falhou"
+msgstr ""
#: src/functions/auth.tsx:141
#~ msgid "Already logged in"
@@ -2134,7 +2141,7 @@ msgstr "A redefinação falhou"
#: src/functions/auth.tsx:142
msgid "Logged In"
-msgstr "Logado"
+msgstr ""
#: src/functions/auth.tsx:142
#~ msgid "Found an existing login - using it to log you in."
@@ -2142,7 +2149,7 @@ msgstr "Logado"
#: src/functions/auth.tsx:143
msgid "Found an existing login - welcome back!"
-msgstr "Encontramos um login existente - bem-vindo de volta!"
+msgstr ""
#: src/functions/forms.tsx:50
#~ msgid "Form method not provided"
@@ -2154,68 +2161,68 @@ msgstr "Encontramos um login existente - bem-vindo de volta!"
#: src/functions/forms.tsx:182
msgid "Invalid Form"
-msgstr "Formulário inválido"
+msgstr ""
#: src/functions/forms.tsx:183
msgid "method parameter not supplied"
-msgstr "parâmetro do método não fornecido"
+msgstr ""
#: src/functions/notifications.tsx:9
msgid "Not implemented"
-msgstr "Não implementado"
+msgstr ""
#: src/functions/notifications.tsx:10
msgid "This feature is not yet implemented"
-msgstr "Esta função ainda não foi implementada"
+msgstr ""
#: src/functions/notifications.tsx:20
msgid "Permission denied"
-msgstr "Permissão negada"
+msgstr ""
#: src/functions/notifications.tsx:21
msgid "You do not have permission to perform this action"
-msgstr "Você não tem permissão para realizar esta ação"
+msgstr ""
#: src/functions/notifications.tsx:32
msgid "Invalid Return Code"
-msgstr "Código de retorno inválido"
+msgstr ""
#: src/functions/notifications.tsx:33
msgid "Server returned status {returnCode}"
-msgstr "O servidor retornou o estado {returnCode}"
+msgstr ""
#: src/hooks/UseForm.tsx:86
msgid "Item Created"
-msgstr "Item Criado"
+msgstr ""
#: src/hooks/UseForm.tsx:103
msgid "Item Updated"
-msgstr "Item Atualizado"
+msgstr ""
#: src/hooks/UseForm.tsx:122
msgid "Item Deleted"
-msgstr "Item Excluído"
+msgstr ""
#: src/hooks/UseForm.tsx:126
msgid "Are you sure you want to delete this item?"
-msgstr "Tem certeza que deseja remover este item?"
+msgstr ""
#: src/pages/Auth/Logged-In.tsx:22
msgid "Checking if you are already logged in"
-msgstr "Checando se você já está conectado"
+msgstr ""
#: src/pages/Auth/Login.tsx:31
#: src/pages/Index/Scan.tsx:318
msgid "No selection"
-msgstr "Nada selecionado"
+msgstr ""
#: src/pages/Auth/Login.tsx:75
msgid "Welcome, log in below"
-msgstr "Bem-vindo(a), acesse abaixo"
+msgstr ""
#: src/pages/Auth/Login.tsx:77
msgid "Register below"
-msgstr "Registre-se abaixo"
+msgstr ""
#: src/pages/Auth/Login.tsx:121
#~ msgid "Edit host options"
@@ -2224,59 +2231,59 @@ msgstr "Registre-se abaixo"
#: src/pages/Auth/Reset.tsx:41
#: src/pages/Auth/Set-Password.tsx:112
msgid "Send mail"
-msgstr "Enviar e-mail"
+msgstr ""
#: src/pages/Auth/Set-Password.tsx:30
msgid "Token invalid"
-msgstr "Token inválido"
+msgstr ""
#: src/pages/Auth/Set-Password.tsx:31
msgid "You need to provide a valid token to set a new password. Check your inbox for a reset link."
-msgstr "Você precisa fornecer um token válido para definir uma nova senha. Verifique sua caixa de entrada para um link de redefinição."
+msgstr ""
#: src/pages/Auth/Set-Password.tsx:49
msgid "No token provided"
-msgstr "Nenhum token fornecido"
+msgstr ""
#: src/pages/Auth/Set-Password.tsx:50
msgid "You need to provide a token to set a new password. Check your inbox for a reset link."
-msgstr "Você precisa fornecer um token para definir uma nova senha. Verifique sua caixa de entrada para um link de redefinição."
+msgstr ""
#: src/pages/Auth/Set-Password.tsx:73
msgid "Password set"
-msgstr "Senha definida"
+msgstr ""
#: src/pages/Auth/Set-Password.tsx:74
msgid "The password was set successfully. You can now login with your new password"
-msgstr "Sua senha foi alterada com sucesso. Agora você pode acessar usando sua nova senha"
+msgstr ""
#: src/pages/Auth/Set-Password.tsx:101
msgid "Set new password"
-msgstr "Defina uma nova senha"
+msgstr ""
#: src/pages/ErrorPage.tsx:17
msgid "Error: {0}"
-msgstr "Erro: {0}"
+msgstr ""
#: src/pages/ErrorPage.tsx:28
msgid "Sorry, an unexpected error has occurred."
-msgstr "Desculpe, ocorreu um erro inesperado."
+msgstr ""
#: src/pages/Index/Dashboard.tsx:22
msgid "Autoupdate"
-msgstr "Atualizar automaticamente"
+msgstr ""
#: src/pages/Index/Dashboard.tsx:26
msgid "This page is a replacement for the old start page with the same information. This page will be deprecated and replaced by the home page."
-msgstr "Esta página é uma substituição para a página inicial antiga com as mesmas informações. Esta página será descontinuada e substituída pela página inicial."
+msgstr ""
#: src/pages/Index/Home.tsx:58
msgid "Welcome to your Dashboard{0}"
-msgstr "Bem-vindo ao seu painel{0}"
+msgstr ""
#: src/pages/Index/Playground.tsx:197
msgid "This page is a showcase for the possibilities of Platform UI."
-msgstr "Esta página é uma demonstração para as possibilidades da interface de plataforma."
+msgstr ""
#: src/pages/Index/Profile/Profile.tsx:30
#: src/pages/Index/Profile/Profile.tsx:141
@@ -2416,133 +2423,133 @@ msgstr "Esta página é uma demonstração para as possibilidades da interface d
#: src/pages/Index/Scan.tsx:214
msgid "Manual input"
-msgstr "Entrada manual"
+msgstr ""
#: src/pages/Index/Scan.tsx:215
msgid "Image Barcode"
-msgstr "Imagem do Código de Barras"
+msgstr ""
#: src/pages/Index/Scan.tsx:245
msgid "Selected elements are not known"
-msgstr "Selecionar elementos não conhecidos"
+msgstr ""
#: src/pages/Index/Scan.tsx:252
msgid "Multiple object types selected"
-msgstr "Múltiplos tipos de objetos selecionados"
+msgstr ""
#: src/pages/Index/Scan.tsx:259
msgid "Actions for {0}"
-msgstr "Ações para {0}"
+msgstr ""
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
-msgstr "Contar"
+msgstr ""
#: src/pages/Index/Scan.tsx:276
msgid "Scan Page"
-msgstr "Escanear Página"
+msgstr ""
#: src/pages/Index/Scan.tsx:279
msgid "This page can be used for continuously scanning items and taking actions on them."
-msgstr "Esta página pode ser usada para escanear itens continuamente e executar ações sobre eles."
+msgstr ""
#: src/pages/Index/Scan.tsx:294
msgid "Select the input method you want to use to scan items."
-msgstr "Selecione o método de entrada que você deseja usar para escanear os itens."
+msgstr ""
#: src/pages/Index/Scan.tsx:296
msgid "Input"
-msgstr "Entrada"
+msgstr ""
#: src/pages/Index/Scan.tsx:303
msgid "Select input method"
-msgstr "Selecionar método de entrada"
+msgstr ""
#: src/pages/Index/Scan.tsx:304
msgid "Nothing found"
-msgstr "Nada encontrado"
+msgstr ""
#: src/pages/Index/Scan.tsx:312
msgid "Depending on the selected parts actions will be shown here. Not all barcode types are supported currently."
-msgstr "Dependendo das peças selecionadas as ações serão exibidas aqui. Nem todos os códigos de barras são suportados atualmente."
+msgstr ""
#: src/pages/Index/Scan.tsx:314
msgid "Action"
-msgstr "Ação"
+msgstr ""
#: src/pages/Index/Scan.tsx:323
msgid "{0} items selected"
-msgstr "{0} itens selecionados"
+msgstr ""
#: src/pages/Index/Scan.tsx:326
msgid "General Actions"
-msgstr "Ações Gerais"
+msgstr ""
#: src/pages/Index/Scan.tsx:339
msgid "Lookup part"
-msgstr "Peça Pesquisada"
+msgstr ""
#: src/pages/Index/Scan.tsx:346
msgid "Open Link"
-msgstr "Abrir Link"
+msgstr ""
#: src/pages/Index/Scan.tsx:361
msgid "History is locally kept in this browser."
-msgstr "O histórico é guardado localmente neste navegador."
+msgstr ""
#: src/pages/Index/Scan.tsx:362
msgid "The history is kept in this browser's local storage. So it won't be shared with other users or other devices but is persistent through reloads. You can select items in the history to perform actions on them. To add items, scan/enter them in the Input area."
-msgstr "O histórico é mantido no armazenamento local deste navegador. Por isso, ele não será compartilhado com outros usuários ou dispositivos, mas será persistente através de recarregamentos. Você pode selecionar itens no histórico para executar ações neles. Para adicionar itens, digitalize-os na área de entrada."
+msgstr ""
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
-msgstr "Histórico"
+msgstr ""
#: src/pages/Index/Scan.tsx:430
msgid "No history"
-msgstr "Sem histórico"
+msgstr ""
#: src/pages/Index/Scan.tsx:449
msgid "Item"
-msgstr "Item"
+msgstr ""
#: src/pages/Index/Scan.tsx:452
msgid "Type"
-msgstr "Tipo"
+msgstr ""
#: src/pages/Index/Scan.tsx:455
msgid "Source"
-msgstr "Fonte"
+msgstr ""
#: src/pages/Index/Scan.tsx:458
msgid "Scanned at"
-msgstr "Escaneado em"
+msgstr ""
#: src/pages/Index/Scan.tsx:510
msgid "Enter item serial or data"
-msgstr "Inserir número de série ou dados do item"
+msgstr ""
#: src/pages/Index/Scan.tsx:522
msgid "Add dummy item"
-msgstr "Adicionar Item fictício"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:32
msgid "Account Details"
-msgstr "Detalhes da Conta"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:41
msgid "First name"
-msgstr "Primeiro nome"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:46
msgid "Last name"
-msgstr "Sobrenome"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:58
msgid "First name:"
-msgstr "Primeiro nome:"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:58
#~ msgid "First name: {0}"
@@ -2554,124 +2561,124 @@ msgstr "Primeiro nome:"
#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:62
msgid "Last name:"
-msgstr "Sobrenome:"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:39
msgid "Use pseudo language"
-msgstr "Usar pseudo-idioma"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:53
msgid "Single Sign On Accounts"
-msgstr "Contas de Login Único (SSO)"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:60
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:78
msgid "Not enabled"
-msgstr "Não habilitado"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:63
msgid "Single Sign On is not enabled for this server"
-msgstr "Contas de Login Único (SSO) não estão habilitadas neste servidor"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:67
msgid "Multifactor"
-msgstr "Multifator"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:81
msgid "Multifactor authentication is not configured for your account"
-msgstr "A autenticação de múltiplos fatores não está configurada para sua conta"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:132
msgid "The following email addresses are associated with your account:"
-msgstr "Os seguintes endereços de e-mail estão associados à sua conta:"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:144
msgid "Primary"
-msgstr "Principal"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:149
msgid "Verified"
-msgstr "Verificado"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:153
msgid "Unverified"
-msgstr "Não Verificado"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:166
msgid "Add Email Address"
-msgstr "Adicionar E-mail"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:169
msgid "E-Mail"
-msgstr "E-mail"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:170
msgid "E-Mail address"
-msgstr "Endereço de e-mail"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:182
msgid "Make Primary"
-msgstr "Tornar Principal"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:187
msgid "Re-send Verification"
-msgstr "Reenviar Verificação"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:198
msgid "Add Email"
-msgstr "Adicionar E-mail"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:263
msgid "Provider has not been configured"
-msgstr "O provedor não foi configurado"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:273
msgid "Not configured"
-msgstr "Não configurado"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:276
msgid "There are no social network accounts connected to this account."
-msgstr "Não há nenhuma rede social conectada a essa conta."
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:286
msgid "You can sign in to your account using any of the following third party accounts"
-msgstr "Você pode entrar na sua conta usando qualquer uma das seguintes contas de terceiros"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:68
msgid "bars"
-msgstr "barras"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:69
msgid "oval"
-msgstr "oval"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:70
msgid "dots"
-msgstr "pontos"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:81
msgid "Theme"
-msgstr "Tema"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:87
msgid "Primary color"
-msgstr "Cor primária"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:100
msgid "White color"
-msgstr "Cor branca"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:108
msgid "Black color"
-msgstr "Cor preta"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:116
msgid "Border Radius"
-msgstr "Raio da borda"
+msgstr ""
#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:132
msgid "Loader"
-msgstr "Carregador"
+msgstr ""
#: src/pages/Index/Settings/AdminCenter.tsx:30
#~ msgid "User Management"
@@ -2683,11 +2690,11 @@ msgstr "Carregador"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:69
msgid "Background Tasks"
-msgstr "Tarefas de segundo plano"
+msgstr ""
#: src/pages/Index/Settings/AdminCenter/Index.tsx:75
msgid "Error Reports"
-msgstr "Relatórios de Erro"
+msgstr ""
#: src/pages/Index/Settings/AdminCenter/Index.tsx:81
msgid "Currencies"
@@ -2695,11 +2702,11 @@ msgstr ""
#: src/pages/Index/Settings/AdminCenter/Index.tsx:99
msgid "Custom Units"
-msgstr "Unidades personalizadas"
+msgstr ""
#: src/pages/Index/Settings/AdminCenter/Index.tsx:105
msgid "Part Parameters"
-msgstr "Parâmetros da Peça"
+msgstr ""
#: src/pages/Index/Settings/AdminCenter/Index.tsx:117
#: src/tables/machine/MachineTypeTable.tsx:278
@@ -2708,15 +2715,15 @@ msgstr ""
#: src/pages/Index/Settings/AdminCenter/Index.tsx:127
msgid "Quick Actions"
-msgstr "Ações Rápidas"
+msgstr ""
#: src/pages/Index/Settings/AdminCenter/Index.tsx:132
msgid "Add a new user"
-msgstr "Adicionar novo usuário"
+msgstr ""
#: src/pages/Index/Settings/AdminCenter/Index.tsx:151
msgid "Advanced Options"
-msgstr "Opções Avançadas"
+msgstr ""
#: src/pages/Index/Settings/AdminCenter/MachineManagementPanel.tsx:43
msgid "Machine types"
@@ -2733,11 +2740,11 @@ msgstr ""
#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:28
#: src/tables/settings/UserTable.tsx:103
msgid "Info"
-msgstr "Info"
+msgstr ""
#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:32
msgid "External plugins are not enabled for this InvenTree installation."
-msgstr "Extensões externas não estão ativados para esta instalação do InvenTree."
+msgstr ""
#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:33
#~ msgid "Plugin Error Stack"
@@ -2757,46 +2764,46 @@ msgstr ""
#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:59
msgid "Plugin Settings"
-msgstr "Configurações da Extensão"
+msgstr ""
#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:25
msgid "Pending Tasks"
-msgstr "Tarefas Pendentes"
+msgstr ""
#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:33
msgid "Scheduled Tasks"
-msgstr "Tarefas Agendadas"
+msgstr ""
#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:41
msgid "Failed Tasks"
-msgstr "Tarefas com Falhas"
+msgstr ""
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:18
#: src/tables/settings/UserTable.tsx:121
msgid "Groups"
-msgstr "Grupos"
+msgstr ""
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:30
msgid "Select settings relevant for user lifecycle. More available in"
-msgstr "Selecione as configurações relevantes para o ciclo de vida dos usuários. Mais informações disponíveis em"
+msgstr ""
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:35
msgid "System settings"
-msgstr "Configurações do sistema"
+msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:65
msgid "Login"
-msgstr "Entrar"
+msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:87
msgid "Barcodes"
-msgstr "Códigos de barras"
+msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:106
#: src/pages/company/SupplierPartDetail.tsx:55
#: src/pages/part/PartDetail.tsx:516
msgid "Pricing"
-msgstr "Preços"
+msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:118
#~ msgid "Physical Units"
@@ -2804,21 +2811,21 @@ msgstr "Preços"
#: src/pages/Index/Settings/SystemSettings.tsx:135
msgid "Exchange Rates"
-msgstr "Taxas de Câmbio"
+msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:141
msgid "Labels"
-msgstr "Etiquetas"
+msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:147
#: src/pages/Index/Settings/UserSettings.tsx:99
msgid "Reporting"
-msgstr "Relatórios"
+msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:221
#: src/pages/part/PartDetail.tsx:565
msgid "Stocktake"
-msgstr "Balanço"
+msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:226
#: src/pages/build/BuildDetail.tsx:264
@@ -2826,31 +2833,31 @@ msgstr "Balanço"
#: src/pages/part/PartDetail.tsx:502
#: src/pages/sales/SalesOrderDetail.tsx:62
msgid "Build Orders"
-msgstr "Ordens de Produções"
+msgstr ""
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
-msgstr "Mudar para Configuração de Usuário"
+msgstr ""
#: src/pages/Index/Settings/UserSettings.tsx:29
msgid "Account"
-msgstr "Conta"
+msgstr ""
#: src/pages/Index/Settings/UserSettings.tsx:35
msgid "Security"
-msgstr "Segurança"
+msgstr ""
#: src/pages/Index/Settings/UserSettings.tsx:46
msgid "Display Options"
-msgstr "Opções de exibição"
+msgstr ""
#: src/pages/Index/Settings/UserSettings.tsx:115
msgid "Account Settings"
-msgstr "Configurações de Conta"
+msgstr ""
#: src/pages/Index/Settings/UserSettings.tsx:119
msgid "Switch to System Setting"
-msgstr "Mudar para Configuração do Sistema"
+msgstr ""
#: src/pages/Index/UserSettings.tsx:103
#~ msgid "User Settings"
@@ -2862,52 +2869,56 @@ msgstr "Mudar para Configuração do Sistema"
#: src/pages/NotFound.tsx:17
msgid "Not Found"
-msgstr "Não encontrado"
+msgstr ""
#: src/pages/NotFound.tsx:20
msgid "Sorry, this page is not known or was moved."
-msgstr "Desculpe, esta página não é conhecida ou foi movida."
+msgstr ""
#: src/pages/NotFound.tsx:27
msgid "Go to the start page"
-msgstr "Ir para a página inicial"
+msgstr ""
+
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
-msgstr "Marcar como não lido"
+msgstr ""
#: src/pages/build/BuildDetail.tsx:72
msgid "Base Part"
-msgstr "Peça base"
+msgstr ""
#: src/pages/build/BuildDetail.tsx:80
msgid "Build Status"
-msgstr "Estado da Produção"
+msgstr ""
#: src/pages/build/BuildDetail.tsx:101
msgid "Build Details"
-msgstr "Detalhes da Produção"
+msgstr ""
#: src/pages/build/BuildDetail.tsx:107
#: src/tables/build/BuildLineTable.tsx:195
msgid "Allocate Stock"
-msgstr "Alocar Estoque"
+msgstr ""
#: src/pages/build/BuildDetail.tsx:122
msgid "Incomplete Outputs"
-msgstr "Saídas Incompletas"
+msgstr ""
#: src/pages/build/BuildDetail.tsx:128
msgid "Completed Outputs"
-msgstr "Saídas Completas"
+msgstr ""
#: src/pages/build/BuildDetail.tsx:141
msgid "Consumed Stock"
-msgstr "Estoque Consumido"
+msgstr ""
#: src/pages/build/BuildDetail.tsx:153
msgid "Child Build Orders"
-msgstr "Pedido de Produção Filhos"
+msgstr ""
#: src/pages/build/BuildDetail.tsx:163
#: src/pages/company/CompanyDetail.tsx:154
@@ -2916,9 +2927,9 @@ msgstr "Pedido de Produção Filhos"
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
-msgstr "Anexos"
+msgstr ""
#: src/pages/build/BuildDetail.tsx:175
#: src/pages/company/CompanyDetail.tsx:166
@@ -2926,10 +2937,10 @@ msgstr "Anexos"
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
-msgstr "Anotações"
+msgstr ""
#: src/pages/build/BuildDetail.tsx:185
#: src/pages/part/PartDetail.tsx:269
@@ -2944,7 +2955,7 @@ msgstr "Anotações"
#: src/pages/build/BuildDetail.tsx:191
msgid "Edit Build Order"
-msgstr "Editar Pedido de Produção"
+msgstr ""
#: src/pages/build/BuildDetail.tsx:196
#: src/pages/part/PartDetail.tsx:280
@@ -2961,7 +2972,7 @@ msgstr "Editar Pedido de Produção"
#: src/pages/build/BuildDetail.tsx:217
msgid "Reporting Actions"
-msgstr "Ações para Reportar"
+msgstr ""
#: src/pages/build/BuildDetail.tsx:221
#~ msgid "Edit build order"
@@ -2969,11 +2980,11 @@ msgstr "Ações para Reportar"
#: src/pages/build/BuildDetail.tsx:222
msgid "Report"
-msgstr "Reportar"
+msgstr ""
#: src/pages/build/BuildDetail.tsx:223
msgid "Print build report"
-msgstr "Imprimir relatório de construção"
+msgstr ""
#: src/pages/build/BuildDetail.tsx:226
#~ msgid "Duplicate build order"
@@ -2981,7 +2992,7 @@ msgstr "Imprimir relatório de construção"
#: src/pages/build/BuildDetail.tsx:229
msgid "Build Order Actions"
-msgstr "Ações do Pedido de Produção"
+msgstr ""
#: src/pages/build/BuildDetail.tsx:231
#~ msgid "Delete build order"
@@ -2999,21 +3010,21 @@ msgstr "Ações do Pedido de Produção"
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
-msgstr "Detalhes"
+msgstr ""
#: src/pages/company/CompanyDetail.tsx:81
msgid "Manufactured Parts"
-msgstr "Peças Fabricadas"
+msgstr ""
#: src/pages/company/CompanyDetail.tsx:90
msgid "Supplied Parts"
-msgstr "Peças Fornecidas"
+msgstr ""
#: src/pages/company/CompanyDetail.tsx:131
msgid "Assigned Stock"
-msgstr "Estoque Atribuído"
+msgstr ""
#: src/pages/company/CompanyDetail.tsx:175
#~ msgid "Edit company"
@@ -3021,7 +3032,7 @@ msgstr "Estoque Atribuído"
#: src/pages/company/CompanyDetail.tsx:182
msgid "Edit Company"
-msgstr "Editar Empresa"
+msgstr ""
#: src/pages/company/CompanyDetail.tsx:189
#~ msgid "Delete company"
@@ -3029,45 +3040,45 @@ msgstr "Editar Empresa"
#: src/pages/company/CompanyDetail.tsx:191
msgid "Company Actions"
-msgstr "Ações da Empresa"
+msgstr ""
#: src/pages/company/CustomerDetail.tsx:8
#: src/tables/sales/ReturnOrderTable.tsx:64
#: src/tables/sales/SalesOrderTable.tsx:95
msgid "Customer"
-msgstr "Cliente"
+msgstr ""
#: src/pages/company/ManufacturerDetail.tsx:8
#: src/pages/company/ManufacturerPartDetail.tsx:88
msgid "Manufacturer"
-msgstr "Fabricante"
+msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:42
#: src/pages/part/CategoryDetail.tsx:71
#: src/pages/part/PartDetail.tsx:464
msgid "Parameters"
-msgstr "Parâmetros"
+msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:54
#: src/pages/part/PartDetail.tsx:534
#: src/pages/purchasing/PurchasingIndex.tsx:26
msgid "Suppliers"
-msgstr "Fornecedores"
+msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:98
msgid "ManufacturerPart"
-msgstr "Peça do Fabricante"
+msgstr ""
#: src/pages/company/SupplierDetail.tsx:8
#: src/pages/company/SupplierPartDetail.tsx:68
#: src/tables/purchasing/PurchaseOrderTable.tsx:73
msgid "Supplier"
-msgstr "Fornecedor"
+msgstr ""
#: src/pages/company/SupplierPartDetail.tsx:40
#: src/pages/purchasing/PurchaseOrderDetail.tsx:66
msgid "Received Stock"
-msgstr "Estoque Recebido"
+msgstr ""
#: src/pages/part/CategoryDetail.tsx:52
#~ msgid "Subcategories"
@@ -3083,83 +3094,83 @@ msgstr "Estoque Recebido"
#: src/tables/plugin/PluginListTable.tsx:170
#: src/tables/plugin/PluginListTable.tsx:297
msgid "Description"
-msgstr "Descrição"
+msgstr ""
#: src/pages/part/PartDetail.tsx:125
msgid "Variant of"
-msgstr "Variante de"
+msgstr ""
#: src/pages/part/PartDetail.tsx:136
#: src/tables/build/BuildLineTable.tsx:106
msgid "Available Stock"
-msgstr "Estoque Disponível"
+msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
-msgstr "Em Estoque"
+msgstr ""
#: src/pages/part/PartDetail.tsx:155
msgid "Minimum Stock"
-msgstr "Estoque Mínimo"
+msgstr ""
#: src/pages/part/PartDetail.tsx:165
#: src/tables/bom/BomTable.tsx:180
#: src/tables/build/BuildLineTable.tsx:92
msgid "On order"
-msgstr "No pedido"
+msgstr ""
#: src/pages/part/PartDetail.tsx:181
msgid "Allocated to Build Orders"
-msgstr "Alocado para Pedidos de Construção"
+msgstr ""
#: src/pages/part/PartDetail.tsx:196
msgid "Allocated to Sales Orders"
-msgstr "Alocado para Pedidos de Venda"
+msgstr ""
#: src/pages/part/PartDetail.tsx:207
#: src/tables/bom/BomTable.tsx:204
msgid "Can Build"
-msgstr "Pode Produzir"
+msgstr ""
#: src/pages/part/PartDetail.tsx:218
#: src/tables/bom/BomTable.tsx:188
#: src/tables/part/PartTable.tsx:95
msgid "Building"
-msgstr "Produzindo"
+msgstr ""
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
-msgstr "Categoria"
+msgstr ""
#: src/pages/part/PartDetail.tsx:239
msgid "IPN"
-msgstr "IPN"
+msgstr ""
#: src/pages/part/PartDetail.tsx:250
msgid "Revision"
-msgstr "Revisão"
+msgstr ""
#: src/pages/part/PartDetail.tsx:261
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
msgid "Units"
-msgstr "Unidades"
+msgstr ""
#: src/pages/part/PartDetail.tsx:271
#: src/tables/settings/PendingTasksTable.tsx:40
msgid "Keywords"
-msgstr "Palavras-chave"
+msgstr ""
#: src/pages/part/PartDetail.tsx:281
msgid "Creation Date"
-msgstr "Criado em"
+msgstr ""
#: src/pages/part/PartDetail.tsx:295
#: src/tables/bom/BomTable.tsx:137
#: src/tables/part/PartTable.tsx:154
msgid "Price Range"
-msgstr "Faixa de Preço"
+msgstr ""
#: src/pages/part/PartDetail.tsx:310
#~ msgid "Edit part"
@@ -3175,85 +3186,85 @@ msgstr "Faixa de Preço"
#: src/pages/part/PartDetail.tsx:332
msgid "Last Stocktake"
-msgstr "Último Balanço"
+msgstr ""
#: src/pages/part/PartDetail.tsx:393
msgid "Default Location"
-msgstr "Local Padrão"
+msgstr ""
#: src/pages/part/PartDetail.tsx:404
msgid "Default Supplier"
-msgstr "Fornecedor Padrão"
+msgstr ""
#: src/pages/part/PartDetail.tsx:415
msgid "Link"
-msgstr "Link"
+msgstr ""
#: src/pages/part/PartDetail.tsx:427
msgid "Responsible"
-msgstr "Responsável"
+msgstr ""
#: src/pages/part/PartDetail.tsx:482
msgid "Variants"
-msgstr "Variantes"
+msgstr ""
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
-msgstr "Alocações"
+msgstr ""
#: src/pages/part/PartDetail.tsx:495
msgid "Bill of Materials"
-msgstr "Lista de Materiais"
+msgstr ""
#: src/pages/part/PartDetail.tsx:509
msgid "Used In"
-msgstr "Usado em"
+msgstr ""
#: src/pages/part/PartDetail.tsx:521
#: src/pages/purchasing/PurchasingIndex.tsx:37
msgid "Manufacturers"
-msgstr "Fabricantes"
+msgstr ""
#: src/pages/part/PartDetail.tsx:560
msgid "Scheduling"
-msgstr "Agendamento"
+msgstr ""
#: src/pages/part/PartDetail.tsx:570
msgid "Test Templates"
-msgstr "Testar Modelos"
+msgstr ""
#: src/pages/part/PartDetail.tsx:581
msgid "Related Parts"
-msgstr "Peças Relacionadas"
+msgstr ""
#: src/pages/part/PartDetail.tsx:636
msgid "Edit Part"
-msgstr "Editar Peça"
+msgstr ""
#: src/pages/part/PartDetail.tsx:657
msgid "Stock Actions"
-msgstr "Ações de Estoque"
+msgstr ""
#: src/pages/part/PartDetail.tsx:662
msgid "Count Stock"
-msgstr "Contar Estoque"
+msgstr ""
#: src/pages/part/PartDetail.tsx:663
msgid "Count part stock"
-msgstr "Contagem do estoque"
+msgstr ""
#: src/pages/part/PartDetail.tsx:667
msgid "Transfer Stock"
-msgstr "Transferir Estoque"
+msgstr ""
#: src/pages/part/PartDetail.tsx:668
msgid "Transfer part stock"
-msgstr "Transferir estoque de peça"
+msgstr ""
#: src/pages/part/PartDetail.tsx:674
msgid "Part Actions"
-msgstr "Ações da Peça"
+msgstr ""
#: src/pages/part/PartIndex.tsx:29
#~ msgid "Categories"
@@ -3263,48 +3274,48 @@ msgstr "Ações da Peça"
#: src/pages/sales/ReturnOrderDetail.tsx:33
#: src/pages/sales/SalesOrderDetail.tsx:42
msgid "Order Details"
-msgstr "Detalhes do pedido"
+msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:60
#: src/pages/sales/SalesOrderDetail.tsx:47
msgid "Line Items"
-msgstr "Itens de linha"
+msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:119
msgid "Order Actions"
-msgstr "Ações de Pedido"
+msgstr ""
#: src/pages/sales/SalesIndex.tsx:33
msgid "Customers"
-msgstr "Clientes"
+msgstr ""
#: src/pages/sales/SalesOrderDetail.tsx:52
msgid "Pending Shipments"
-msgstr "Envios Pendentes"
+msgstr ""
#: src/pages/sales/SalesOrderDetail.tsx:57
msgid "Completed Shipments"
-msgstr "Envios Concluídos"
+msgstr ""
#: src/pages/stock/LocationDetail.tsx:38
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
-msgstr "Rastreamento de Estoque"
+msgstr ""
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
-msgstr "Dados de Teste"
+msgstr ""
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
-msgstr "Itens Instalados"
+msgstr ""
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
-msgstr "Itens Filhos"
+msgstr ""
#: src/pages/stock/StockDetail.tsx:155
#~ msgid "Link custom barcode to stock item"
@@ -3314,378 +3325,390 @@ msgstr "Itens Filhos"
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
-msgstr "Operações de Estoque"
+msgstr ""
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
-msgstr "Contagem de estoque"
+msgstr ""
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
-msgstr "Adicionar"
+msgstr ""
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
-msgstr "Adicionar estoque"
+msgstr ""
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
-msgstr "Remover estoque"
+msgstr ""
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
-msgstr "Transferir"
+msgstr ""
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
-msgstr "Transferir estoque"
-
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr "Duplicar item de estoque"
+msgstr ""
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr ""
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
-msgstr "Data Prevista"
+msgstr ""
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
-msgstr "Moeda"
+msgstr ""
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
-msgstr "Preço Total"
+msgstr ""
#: src/tables/ColumnSelect.tsx:17
#: src/tables/ColumnSelect.tsx:24
msgid "Select Columns"
-msgstr "Selecionar Colunas"
+msgstr ""
#: src/tables/Details.tsx:111
msgid "Part is not active"
-msgstr "Peça inativa"
+msgstr ""
#: src/tables/Details.tsx:117
msgid "Inactive"
-msgstr "Inativo"
+msgstr ""
#: src/tables/Details.tsx:124
msgid "Part is a template part (variants can be made from this part)"
-msgstr "Esta é uma peça modelo (as variantes podem ser feitas a partir desta peça)"
+msgstr ""
#: src/tables/Details.tsx:130
msgid "Part can be assembled from other parts"
-msgstr "Peça pode ser montada a partir de outras peças"
+msgstr ""
#: src/tables/Details.tsx:136
msgid "Part can be used in assemblies"
-msgstr "Peça pode ser usada em montagens"
+msgstr ""
#: src/tables/Details.tsx:142
msgid "Part stock is tracked by serial number"
-msgstr "Peça em estoque é controlada por número de série"
+msgstr ""
#: src/tables/Details.tsx:148
msgid "Part can be purchased from external suppliers"
-msgstr "Peça pode ser comprada de fornecedores externos"
+msgstr ""
#: src/tables/Details.tsx:154
msgid "Part can be sold to customers"
-msgstr "Peça pode ser vendida a clientes"
+msgstr ""
#: src/tables/Details.tsx:159
msgid "Part is virtual (not a physical part)"
-msgstr "Peça é virtual (não é física)"
+msgstr ""
#: src/tables/Details.tsx:165
#: src/tables/part/PartTable.tsx:236
#: src/tables/part/PartTable.tsx:240
#: src/tables/part/PartVariantTable.tsx:25
msgid "Virtual"
-msgstr "Virtual"
+msgstr ""
#: src/tables/Details.tsx:354
msgid "Copied"
-msgstr "Copiada"
+msgstr ""
#: src/tables/Details.tsx:354
msgid "Copy"
-msgstr "Copiar"
+msgstr ""
#: src/tables/DownloadAction.tsx:12
msgid "CSV"
-msgstr "CSV"
+msgstr ""
#: src/tables/DownloadAction.tsx:13
msgid "TSV"
-msgstr "TSV"
+msgstr ""
#: src/tables/DownloadAction.tsx:14
msgid "Excel"
-msgstr "Excel"
+msgstr ""
#: src/tables/DownloadAction.tsx:22
msgid "Download selected data"
-msgstr "Baixar os dados selecionados"
+msgstr ""
#: src/tables/Filter.tsx:88
#: src/tables/build/BuildOrderTable.tsx:118
msgid "Assigned to me"
-msgstr "Atribuído a mim"
+msgstr ""
#: src/tables/Filter.tsx:89
#: src/tables/build/BuildOrderTable.tsx:119
msgid "Show orders assigned to me"
-msgstr "Mostrar pedidos atribuídos a mim"
+msgstr ""
#: src/tables/Filter.tsx:96
msgid "Outstanding"
-msgstr "Pendente"
+msgstr ""
#: src/tables/Filter.tsx:97
msgid "Show outstanding orders"
-msgstr "Mostrar pedidos pendentes"
+msgstr ""
#: src/tables/Filter.tsx:104
msgid "Overdue"
-msgstr "Em atraso"
+msgstr ""
#: src/tables/Filter.tsx:105
msgid "Show overdue orders"
-msgstr "Mostrar pedidos atrasados"
+msgstr ""
#: src/tables/FilterSelectDrawer.tsx:51
msgid "Remove filter"
-msgstr "Remover filtro"
+msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
-msgstr "Selecionar filtro"
+msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
-msgstr "Filtro"
+msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
-msgstr "Valor"
+msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
-msgstr "Selecionar valor do filtro"
+msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
-msgstr "Filtros da Tabela"
+msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
-msgstr "Adicionar Filtro"
+msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
-msgstr "Limpar Filtros"
+msgstr ""
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
-msgstr "Nenhum registro encontrado"
+msgstr ""
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
-msgstr "O servidor retornou um tipo de dado incorreto"
+msgstr ""
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
-msgstr "Requisição inválida"
+msgstr ""
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
-msgstr "Não autorizado"
+msgstr ""
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
-msgstr "Proibido"
+msgstr ""
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
-msgstr "Não encontrado"
+msgstr ""
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
-msgstr "Remover registros selecionados"
+msgstr ""
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
-msgstr "Tem certeza que deseja apagar os registros selecionados?"
+msgstr ""
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
-msgstr "Essa ação não pode ser desfeita!"
+msgstr ""
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
-msgstr "Registos removidos"
+msgstr ""
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
-msgstr "Registros foram removidos com sucesso"
+msgstr ""
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
-msgstr "Falha ao remover registros"
+msgstr ""
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
-msgstr "Ações de código de barras"
+msgstr ""
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
-msgstr "Ações de impressão"
+msgstr ""
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
-msgstr "Atualizar dados"
+msgstr ""
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
-msgstr "Filtros da Tabela"
+msgstr ""
#: src/tables/RowActions.tsx:149
msgid "Actions"
-msgstr "Ações"
+msgstr ""
#: src/tables/bom/BomTable.tsx:76
msgid "This BOM item is defined for a different parent"
-msgstr "Este item da BOM é definido para um pai diferente"
+msgstr ""
#: src/tables/bom/BomTable.tsx:91
msgid "Part Information"
-msgstr "Informação da Peça"
+msgstr ""
#: src/tables/bom/BomTable.tsx:155
#: src/tables/part/PartTable.tsx:127
msgid "No stock"
-msgstr "Sem Estoque"
+msgstr ""
#: src/tables/bom/BomTable.tsx:163
#: src/tables/build/BuildLineTable.tsx:64
msgid "Includes substitute stock"
-msgstr "Incluir estoque de substitutos"
+msgstr ""
#: src/tables/bom/BomTable.tsx:172
#: src/tables/build/BuildLineTable.tsx:74
msgid "Includes variant stock"
-msgstr "Incluir estoque de variantes"
+msgstr ""
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
-msgstr "Informação do Estoque"
+msgstr ""
#: src/tables/bom/BomTable.tsx:208
#: src/tables/build/BuildLineTable.tsx:170
msgid "Consumable item"
-msgstr "Item Consumível"
+msgstr ""
#: src/tables/bom/BomTable.tsx:227
msgid "Trackable Part"
-msgstr "Peça Rastreável"
+msgstr ""
#: src/tables/bom/BomTable.tsx:228
msgid "Show trackable items"
-msgstr "Mostrar itens rastreáveis"
+msgstr ""
#: src/tables/bom/BomTable.tsx:232
msgid "Assembled Part"
-msgstr "Peça Montada"
+msgstr ""
#: src/tables/bom/BomTable.tsx:233
msgid "Show asssmbled items"
-msgstr "Exibir itens montados"
+msgstr ""
#: src/tables/bom/BomTable.tsx:237
msgid "Show items with available stock"
-msgstr "Mostrar itens com estoque disponível"
+msgstr ""
#: src/tables/bom/BomTable.tsx:241
msgid "Show items on order"
-msgstr "Mostrar itens no pedido"
+msgstr ""
#: src/tables/bom/BomTable.tsx:245
msgid "Show validated items"
-msgstr "Mostrar itens validados"
+msgstr ""
#: src/tables/bom/BomTable.tsx:249
#: src/tables/bom/UsedInTable.tsx:58
msgid "Show inherited items"
-msgstr "Mostrar itens herdados"
+msgstr ""
#: src/tables/bom/BomTable.tsx:253
#: src/tables/bom/UsedInTable.tsx:62
msgid "Show optional items"
-msgstr "Mostrar itens opcionais"
+msgstr ""
#: src/tables/bom/BomTable.tsx:257
msgid "Show consumable items"
-msgstr "Mostrar itens consumíveis"
+msgstr ""
#: src/tables/bom/BomTable.tsx:261
msgid "Has Pricing"
-msgstr "Tem Preço"
+msgstr ""
#: src/tables/bom/BomTable.tsx:262
msgid "Show items with pricing"
-msgstr "Exibir itens com preço"
+msgstr ""
#: src/tables/bom/BomTable.tsx:273
msgid "View BOM"
-msgstr "Ver BOM"
+msgstr ""
#: src/tables/bom/BomTable.tsx:284
msgid "Validate BOM line"
-msgstr "Validar linha da BOM"
+msgstr ""
#: src/tables/bom/BomTable.tsx:292
msgid "Edit Substitutes"
-msgstr "Editar substitutos"
+msgstr ""
#: src/tables/bom/BomTable.tsx:306
msgid "Edit Bom Item"
-msgstr "Editar Item da BOM"
+msgstr ""
#: src/tables/bom/BomTable.tsx:308
msgid "Bom item updated"
-msgstr "Item da BOM atualizado"
+msgstr ""
#: src/tables/bom/BomTable.tsx:323
msgid "Delete Bom Item"
-msgstr "Apagar Item da BOM"
+msgstr ""
#: src/tables/bom/BomTable.tsx:324
msgid "Bom item deleted"
-msgstr "Item da BOM apagado"
+msgstr ""
#: src/tables/bom/BomTable.tsx:326
msgid "Are you sure you want to remove this BOM item?"
-msgstr "Tem certeza que deseja remover este item da BOM?"
+msgstr ""
#: src/tables/bom/UsedInTable.tsx:66
#: src/tables/build/BuildOrderTable.tsx:102
@@ -3694,172 +3717,172 @@ msgstr "Tem certeza que deseja remover este item da BOM?"
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
-msgstr "Ativo"
+msgstr ""
#: src/tables/bom/UsedInTable.tsx:67
msgid "Show active assemblies"
-msgstr "Mostrar montagens ativas"
+msgstr ""
#: src/tables/bom/UsedInTable.tsx:71
#: src/tables/part/PartTable.tsx:194
#: src/tables/part/PartVariantTable.tsx:30
msgid "Trackable"
-msgstr "Rastreável"
+msgstr ""
#: src/tables/bom/UsedInTable.tsx:72
msgid "Show trackable assemblies"
-msgstr "Mostrar montagens rastreáveis"
+msgstr ""
#: src/tables/build/BuildLineTable.tsx:34
msgid "Show allocated lines"
-msgstr "Mostrar linhas alocadas"
+msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
-msgstr "Disponível"
+msgstr ""
#: src/tables/build/BuildLineTable.tsx:39
msgid "Show lines with available stock"
-msgstr "Mostrar linhas com estoque disponível"
+msgstr ""
#: src/tables/build/BuildLineTable.tsx:43
msgid "Consumable"
-msgstr "Consumível"
+msgstr ""
#: src/tables/build/BuildLineTable.tsx:44
msgid "Show consumable lines"
-msgstr "Mostrar linhas consumíveis"
+msgstr ""
#: src/tables/build/BuildLineTable.tsx:48
msgid "Optional"
-msgstr "Opcional"
+msgstr ""
#: src/tables/build/BuildLineTable.tsx:49
msgid "Show optional lines"
-msgstr "Mostrar linhas opcionais"
+msgstr ""
#: src/tables/build/BuildLineTable.tsx:83
msgid "In production"
-msgstr "Em produção"
+msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
-msgstr "Nenhum estoque disponível"
+msgstr ""
#: src/tables/build/BuildLineTable.tsx:132
msgid "Unit Quantity"
-msgstr "Quantidade Unitária"
+msgstr ""
#: src/tables/build/BuildLineTable.tsx:201
msgid "Order Stock"
-msgstr "Pedir estoque"
+msgstr ""
#: src/tables/build/BuildLineTable.tsx:207
msgid "Build Stock"
-msgstr "Estoque de Produção"
+msgstr ""
#: src/tables/build/BuildOrderTable.tsx:103
msgid "Show active orders"
-msgstr "Mostrar pedidos ativos"
+msgstr ""
#: src/tables/build/BuildOrderTable.tsx:107
#: src/tables/purchasing/PurchaseOrderTable.tsx:56
#: src/tables/sales/ReturnOrderTable.tsx:46
#: src/tables/sales/SalesOrderTable.tsx:53
msgid "Filter by order status"
-msgstr "Filtrar por estado do pedido"
+msgstr ""
#: src/tables/build/BuildOrderTable.tsx:113
msgid "Show overdue status"
-msgstr "Mostrar estados atrasados"
+msgstr ""
#: src/tables/build/BuildOrderTable.tsx:140
#: src/tables/build/BuildOrderTable.tsx:158
msgid "Add Build Order"
-msgstr "Adicionar Pedido de Produção"
+msgstr ""
#: src/tables/company/AddressTable.tsx:121
#: src/tables/company/AddressTable.tsx:185
msgid "Add Address"
-msgstr "Adicionar endereço"
+msgstr ""
#: src/tables/company/AddressTable.tsx:126
msgid "Address created"
-msgstr "Endereço criado"
+msgstr ""
#: src/tables/company/AddressTable.tsx:135
msgid "Edit Address"
-msgstr "Editar o Endereço"
+msgstr ""
#: src/tables/company/AddressTable.tsx:143
msgid "Delete Address"
-msgstr "Excluir Endereço"
+msgstr ""
#: src/tables/company/AddressTable.tsx:145
msgid "Are you sure you want to delete this address?"
-msgstr "Tem a certeza de que quer apagar esta endereço?"
+msgstr ""
#: src/tables/company/CompanyTable.tsx:62
msgid "New Company"
-msgstr "Nova Empresa"
+msgstr ""
#: src/tables/company/CompanyTable.tsx:82
msgid "Add Company"
-msgstr "Adicionar Empresa"
+msgstr ""
#: src/tables/company/ContactTable.tsx:73
msgid "Edit Contact"
-msgstr "Editar Contato"
+msgstr ""
#: src/tables/company/ContactTable.tsx:80
msgid "Add Contact"
-msgstr "Adicionar Contato"
+msgstr ""
#: src/tables/company/ContactTable.tsx:91
msgid "Delete Contact"
-msgstr "Excluir Contato"
+msgstr ""
#: src/tables/company/ContactTable.tsx:131
msgid "Add contact"
-msgstr "Adicionar contato"
+msgstr ""
#: src/tables/general/AttachmentTable.tsx:161
msgid "File uploaded"
-msgstr "Arquivo enviado"
+msgstr ""
#: src/tables/general/AttachmentTable.tsx:162
msgid "File {0} uploaded successfully"
-msgstr "Arquivo {0} carregado com sucesso"
+msgstr ""
#: src/tables/general/AttachmentTable.tsx:173
msgid "Upload Error"
-msgstr "Erro no carregamento"
+msgstr ""
#: src/tables/general/AttachmentTable.tsx:174
msgid "File could not be uploaded"
-msgstr "Arquivo não pode ser carregado"
+msgstr ""
#: src/tables/general/AttachmentTable.tsx:187
msgid "Add attachment"
-msgstr "Adicionar anexo"
+msgstr ""
#: src/tables/general/AttachmentTable.tsx:206
msgid "Add external link"
-msgstr "Adicionar um link externo"
+msgstr ""
#: src/tables/general/AttachmentTable.tsx:237
msgid "No attachments found"
-msgstr "Nenhum anexo encontrado"
+msgstr ""
#: src/tables/general/AttachmentTable.tsx:252
msgid "Upload attachment"
-msgstr "Carregar anexo"
+msgstr ""
#: src/tables/machine/MachineListTable.tsx:197
msgid "Machine restarted"
@@ -3924,9 +3947,9 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
-msgstr "Estado"
+msgstr ""
#: src/tables/machine/MachineListTable.tsx:334
#: src/tables/machine/MachineTypeTable.tsx:252
@@ -3986,7 +4009,7 @@ msgstr ""
#: src/tables/plugin/PluginListTable.tsx:213
#: src/tables/plugin/PluginListTable.tsx:632
msgid "Builtin"
-msgstr "Embutido"
+msgstr ""
#: src/tables/machine/MachineTypeTable.tsx:142
msgid "Available drivers"
@@ -4016,303 +4039,331 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
-msgstr "Idade"
+msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
-msgstr "Mensagem"
+msgstr ""
#: src/tables/part/PartCategoryTable.tsx:64
#: src/tables/part/PartTable.tsx:182
msgid "Include Subcategories"
-msgstr "Incluir Subcategorias"
+msgstr ""
#: src/tables/part/PartCategoryTable.tsx:65
msgid "Include subcategories in results"
-msgstr "Incluir subcategorias nos resultados"
+msgstr ""
#: src/tables/part/PartCategoryTable.tsx:69
msgid "Structural"
-msgstr "Estrutural"
+msgstr ""
#: src/tables/part/PartCategoryTable.tsx:70
msgid "Show structural categories"
-msgstr "Mostrar categorias estruturais"
+msgstr ""
#: src/tables/part/PartCategoryTable.tsx:77
msgid "New Part Category"
-msgstr "Nova Categoria de Peça"
+msgstr ""
#: src/tables/part/PartCategoryTable.tsx:96
msgid "Edit Part Category"
-msgstr "Editar Categoria da Peça"
+msgstr ""
#: src/tables/part/PartCategoryTable.tsx:106
msgid "Add Part Category"
-msgstr "Adicionar Categoria de Peça"
+msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
-msgstr "Novo Parâmetro de Peça"
+msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
-msgstr "Editar Parâmetro da Peça"
+msgstr ""
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
-msgstr "Apagar Parâmetro da Peça"
+msgstr ""
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
-msgstr "Adiciona parâmetro"
+msgstr ""
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
-msgstr "Incluir Variantes"
+msgstr ""
#: src/tables/part/PartParameterTemplateTable.tsx:31
msgid "Checkbox"
-msgstr "Caixa de seleção"
+msgstr ""
#: src/tables/part/PartParameterTemplateTable.tsx:32
msgid "Show checkbox templates"
-msgstr "Mostrar modelos da caixa de seleção"
+msgstr ""
#: src/tables/part/PartParameterTemplateTable.tsx:36
msgid "Has choices"
-msgstr "Tem escolhas"
+msgstr ""
#: src/tables/part/PartParameterTemplateTable.tsx:37
msgid "Show templates with choices"
-msgstr "Mostrar modelos com escolhas"
+msgstr ""
#: src/tables/part/PartParameterTemplateTable.tsx:41
#: src/tables/part/PartTable.tsx:200
msgid "Has Units"
-msgstr "Possui unidades"
+msgstr ""
#: src/tables/part/PartParameterTemplateTable.tsx:42
msgid "Show templates with units"
-msgstr "Mostrar modelos com unidades"
+msgstr ""
#: src/tables/part/PartParameterTemplateTable.tsx:80
msgid "Add Parameter Template"
-msgstr "Adicionar Modelo de Parâmetro"
+msgstr ""
#: src/tables/part/PartParameterTemplateTable.tsx:92
msgid "Edit Parameter Template"
-msgstr "Edital Modelo de Parâmetro"
+msgstr ""
#: src/tables/part/PartParameterTemplateTable.tsx:100
msgid "Delete Parameter Template"
-msgstr "Excluir Modelo de Parâmetro"
+msgstr ""
#: src/tables/part/PartParameterTemplateTable.tsx:130
msgid "Add parameter template"
-msgstr "Adicionar modelo de parâmetro"
+msgstr ""
#: src/tables/part/PartTable.tsx:80
msgid "Minimum stock"
-msgstr "Estoque mínimo"
+msgstr ""
#: src/tables/part/PartTable.tsx:89
msgid "On Order"
-msgstr "No pedido"
+msgstr ""
#: src/tables/part/PartTable.tsx:102
msgid "Build Order Allocations"
-msgstr "Alocações de Pedido de Produção"
+msgstr ""
#: src/tables/part/PartTable.tsx:111
msgid "Sales Order Allocations"
-msgstr "Alocações do Pedido de Vendas"
+msgstr ""
#: src/tables/part/PartTable.tsx:171
msgid "Filter by part active status"
-msgstr "Filtrar por peça em estado ativo"
+msgstr ""
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
-msgstr "Montagem"
+msgstr ""
#: src/tables/part/PartTable.tsx:177
msgid "Filter by assembly attribute"
-msgstr "Filtrar por atributo de montagem"
+msgstr ""
#: src/tables/part/PartTable.tsx:183
msgid "Include parts in subcategories"
-msgstr "Incluir peças em subcategorias"
+msgstr ""
#: src/tables/part/PartTable.tsx:188
msgid "Component"
-msgstr "Componente"
+msgstr ""
#: src/tables/part/PartTable.tsx:189
msgid "Filter by component attribute"
-msgstr "Filtrar por atributo do componente"
+msgstr ""
#: src/tables/part/PartTable.tsx:195
msgid "Filter by trackable attribute"
-msgstr "Filtrar por atributo rastreável"
+msgstr ""
#: src/tables/part/PartTable.tsx:201
msgid "Filter by parts which have units"
-msgstr "Filtrar por peças que têm unidades"
+msgstr ""
#: src/tables/part/PartTable.tsx:206
msgid "Has IPN"
-msgstr "Tem IPN"
+msgstr ""
#: src/tables/part/PartTable.tsx:207
msgid "Filter by parts which have an internal part number"
-msgstr "Filtrar por partes que tenham um número de peça interna"
+msgstr ""
#: src/tables/part/PartTable.tsx:212
msgid "Has Stock"
-msgstr "Tem estoque"
+msgstr ""
#: src/tables/part/PartTable.tsx:213
msgid "Filter by parts which have stock"
-msgstr "Filtrar por peças que têm estoque"
+msgstr ""
#: src/tables/part/PartTable.tsx:219
msgid "Filter by parts which have low stock"
-msgstr "Filtrar por peças que tenham estoque baixo"
+msgstr ""
#: src/tables/part/PartTable.tsx:224
msgid "Purchaseable"
-msgstr "Comprável"
+msgstr ""
#: src/tables/part/PartTable.tsx:225
msgid "Filter by parts which are purchaseable"
-msgstr "Filtrar por peças que são compráveis"
+msgstr ""
#: src/tables/part/PartTable.tsx:230
msgid "Salable"
-msgstr "Vendível"
+msgstr ""
#: src/tables/part/PartTable.tsx:231
msgid "Filter by parts which are salable"
-msgstr "Filtrar por peças que são vendíveis"
+msgstr ""
#: src/tables/part/PartTable.tsx:237
msgid "Filter by parts which are virtual"
-msgstr "Filtrar por peças que são virtuais"
+msgstr ""
#: src/tables/part/PartTable.tsx:241
msgid "Not Virtual"
-msgstr "Não é Virtual"
+msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
-msgstr "Mostrar testes necessários"
+msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
-msgstr "Mostrar testes que exigem um valor"
+msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
-msgstr "Mostrar testes que exigem um anexo"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
-msgstr "Adicionar Modelo de Teste"
+msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
-msgstr "Editar Modelo de Teste"
+msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
-msgstr "Excluir Modelo de Teste"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
-msgstr "Buscar..."
+msgstr ""
#: src/tables/part/PartVariantTable.tsx:16
msgid "Show active variants"
-msgstr "Mostrar variantes ativos"
+msgstr ""
#: src/tables/part/PartVariantTable.tsx:20
msgid "Template"
-msgstr "Modelo"
+msgstr ""
#: src/tables/part/PartVariantTable.tsx:21
msgid "Show template variants"
-msgstr "Mostrar variantes modelo"
+msgstr ""
#: src/tables/part/PartVariantTable.tsx:26
msgid "Show virtual variants"
-msgstr "Mostrar variantes virtuais"
+msgstr ""
#: src/tables/part/PartVariantTable.tsx:31
msgid "Show trackable variants"
-msgstr "Mostrar variantes rastreáveis"
+msgstr ""
#: src/tables/part/RelatedPartTable.tsx:84
msgid "Add Related Part"
-msgstr "Adicionar Peça Relacionada"
+msgstr ""
#: src/tables/part/RelatedPartTable.tsx:99
msgid "Delete Related Part"
-msgstr "Excluir Peça Relacionada"
+msgstr ""
#: src/tables/part/RelatedPartTable.tsx:106
msgid "Add related part"
-msgstr "Adicionar peça relacionada"
+msgstr ""
#: src/tables/plugin/PluginErrorTable.tsx:29
msgid "Stage"
-msgstr "Fase"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:113
msgid "Plugin with id {id} not found"
-msgstr "Plugin com o id {id} não encontrado"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:115
msgid "An error occurred while fetching plugin details"
-msgstr "Ocorreu um erro ao obter os detalhes do plugin"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:132
msgid "Plugin Actions"
-msgstr "Ações do Plugin"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:136
#: src/tables/plugin/PluginListTable.tsx:139
msgid "Edit plugin"
-msgstr "Editar plugin"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:150
#: src/tables/plugin/PluginListTable.tsx:151
msgid "Reload"
-msgstr "Recarregar"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:164
msgid "Plugin information"
-msgstr "Informações do plugin"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:175
msgid "Author"
-msgstr "Autor"
-
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr "Data"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
-msgstr "Informações do pacote"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:202
msgid "Package Name"
@@ -4328,87 +4379,87 @@ msgstr ""
#: src/tables/plugin/PluginListTable.tsx:229
msgid "Plugin settings"
-msgstr "Configurações do Plugin"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:246
msgid "Plugin is active"
-msgstr "Plugin está ativo"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:252
msgid "Plugin is inactive"
-msgstr "Plugin está inativo"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:259
msgid "Plugin is not installed"
-msgstr "Plugin não está instalado"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:282
msgid "Plugin"
-msgstr "Plugin"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:304
msgid "Description not available"
-msgstr "Descrição não disponível"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:329
msgid "Activate Plugin"
-msgstr "Ativar Plugin"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:329
msgid "Deactivate Plugin"
-msgstr "Desativar Plugin"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:338
msgid "Confirm plugin activation"
-msgstr "Confirmar ativação do plugin"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:339
msgid "Confirm plugin deactivation"
-msgstr "Confirmar desativação do plugin"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:345
msgid "The following plugin will be activated"
-msgstr "O seguinte plugin será ativado"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:346
msgid "The following plugin will be deactivated"
-msgstr "O seguinte plugin será desativado"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:357
msgid "Confirm"
-msgstr "Confirmar"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:367
msgid "Activating plugin"
-msgstr "Ativando plugin"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:367
msgid "Deactivating plugin"
-msgstr "Desativando plugin"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:383
msgid "Plugin updated"
-msgstr "Plugin atualizado"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:385
msgid "The plugin was activated"
-msgstr "O plugin foi ativado"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:386
msgid "The plugin was deactivated"
-msgstr "O plugin foi desativado"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:394
msgid "Error updating plugin"
-msgstr "Erro ao atualizar plugin"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:414
msgid "Deactivate"
-msgstr "Desativar"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:423
msgid "Activate"
-msgstr "Ativar"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:454
msgid "Uninstall"
@@ -4416,15 +4467,15 @@ msgstr ""
#: src/tables/plugin/PluginListTable.tsx:485
msgid "Install plugin"
-msgstr "Instalar plugin"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:498
msgid "Install"
-msgstr "Instalar"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:502
msgid "Plugin installed successfully"
-msgstr "Plugin instalado com sucesso"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:515
msgid "Uninstall Plugin"
@@ -4456,602 +4507,690 @@ msgstr ""
#: src/tables/plugin/PluginListTable.tsx:564
msgid "Plugins reloaded"
-msgstr "Plugins recarregados"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:565
msgid "Plugins were reloaded successfully"
-msgstr "Plugins foram recarregados com sucesso"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:581
msgid "Reload Plugins"
-msgstr "Recarregar plugins"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:590
msgid "Install Plugin"
-msgstr "Instalar Plugin"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:608
msgid "Plugin detail"
-msgstr "Detalhes do plugin"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:637
msgid "Sample"
-msgstr "Amostra"
+msgstr ""
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
-msgstr "Instalado"
+msgstr ""
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:57
msgid "Edit Parameter"
-msgstr "Editar Parâmetro"
+msgstr ""
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:60
msgid "Parameter updated"
-msgstr "Parâmetro atualizado"
+msgstr ""
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:71
msgid "Delete Parameter"
-msgstr "Excluir Parâmetro"
+msgstr ""
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:73
msgid "Parameter deleted"
-msgstr "Parâmetro excluído"
+msgstr ""
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:74
msgid "Are you sure you want to delete this parameter?"
-msgstr "Tem certeza de que deseja remover este parâmetro?"
+msgstr ""
#: src/tables/purchasing/ManufacturerPartTable.tsx:56
msgid "Manufacturer Part Number"
-msgstr "Número de Peça do Fabricante"
+msgstr ""
#: src/tables/purchasing/ManufacturerPartTable.tsx:75
msgid "Add Manufacturer Part"
-msgstr "Adicionar Peça do Fabricante"
+msgstr ""
#: src/tables/purchasing/ManufacturerPartTable.tsx:94
msgid "Edit Manufacturer Part"
-msgstr "Editar Peça do Fabricante"
+msgstr ""
#: src/tables/purchasing/ManufacturerPartTable.tsx:97
msgid "Manufacturer part updated"
-msgstr "Peça do Fabricante atualizada"
+msgstr ""
#: src/tables/purchasing/ManufacturerPartTable.tsx:108
msgid "Delete Manufacturer Part"
-msgstr "Excluir Peça do Fabricante"
+msgstr ""
#: src/tables/purchasing/ManufacturerPartTable.tsx:109
msgid "Manufacturer part deleted"
-msgstr "Peça do Fabricante excluída"
+msgstr ""
#: src/tables/purchasing/ManufacturerPartTable.tsx:111
msgid "Are you sure you want to remove this manufacturer part?"
-msgstr "Tem certeza de que deseja remover esta peça do fabricante?"
+msgstr ""
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:73
msgid "Part Description"
-msgstr "Descrição da Peça"
+msgstr ""
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:130
#: src/tables/purchasing/SupplierPartTable.tsx:123
msgid "Pack Quantity"
-msgstr "Quantidade de embalagens"
+msgstr ""
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:100
msgid "Total Quantity"
-msgstr "Quantidade Total"
+msgstr ""
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:116
msgid "Received"
-msgstr "Recebido"
+msgstr ""
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:135
msgid "Supplier Code"
-msgstr "Código do Fornecedor"
+msgstr ""
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:142
msgid "Supplier Link"
-msgstr "Link do Fornecedor"
+msgstr ""
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:149
msgid "Manufacturer Code"
-msgstr "Código do Fabricante"
+msgstr ""
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:157
msgid "Unit Price"
-msgstr "Preço Unitário"
+msgstr ""
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:163
msgid "Destination"
-msgstr "Destino"
+msgstr ""
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:180
msgid "Add Line Item"
-msgstr "Adicionar Item de Linha"
+msgstr ""
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:195
msgid "Edit Line Item"
-msgstr "Editar Item de Linha"
+msgstr ""
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:203
msgid "Delete Line Item"
-msgstr "Excluir Item de Linha"
+msgstr ""
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:214
msgid "Receive line item"
-msgstr "Receber item de linha"
+msgstr ""
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:245
msgid "Add line item"
-msgstr "Adicionar item de linha"
+msgstr ""
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:251
msgid "Receive items"
-msgstr "Receber itens"
+msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:102
#: src/tables/purchasing/PurchaseOrderTable.tsx:119
msgid "Add Purchase Order"
-msgstr "Adicionar Ordem de Compra"
+msgstr ""
#: src/tables/purchasing/SupplierPartTable.tsx:91
msgid "MPN"
-msgstr "MPN"
+msgstr ""
#: src/tables/purchasing/SupplierPartTable.tsx:114
msgid "Base units"
-msgstr "Unidade base"
+msgstr ""
#: src/tables/purchasing/SupplierPartTable.tsx:140
msgid "Updated"
-msgstr "Atualizado"
+msgstr ""
#: src/tables/purchasing/SupplierPartTable.tsx:159
msgid "Add Supplier Part"
-msgstr "Adicionar Peça do Fornecedor"
+msgstr ""
#: src/tables/purchasing/SupplierPartTable.tsx:162
msgid "Supplier part created"
-msgstr "Peça do fornecedor criada"
+msgstr ""
#: src/tables/purchasing/SupplierPartTable.tsx:171
msgid "Add supplier part"
-msgstr "Adicionar peça do fornecedor"
+msgstr ""
#: src/tables/purchasing/SupplierPartTable.tsx:193
msgid "Edit Supplier Part"
-msgstr "Editar Peça do Fornecedor"
+msgstr ""
#: src/tables/purchasing/SupplierPartTable.tsx:196
msgid "Supplier part updated"
-msgstr "Peça do fornecedor atualizada"
+msgstr ""
#: src/tables/purchasing/SupplierPartTable.tsx:207
msgid "Delete Supplier Part"
-msgstr "Excluir Peça do Fornecedor"
+msgstr ""
#: src/tables/purchasing/SupplierPartTable.tsx:208
msgid "Supplier part deleted"
-msgstr "Peça do fornecedor excluída"
+msgstr ""
#: src/tables/purchasing/SupplierPartTable.tsx:210
msgid "Are you sure you want to remove this supplier part?"
-msgstr "Tem certeza de que deseja remover esta peça do fornecedor?"
+msgstr ""
#: src/tables/sales/ReturnOrderTable.tsx:99
msgid "Add Return Order"
-msgstr "Adicionar Pedido de Devolução"
+msgstr ""
#: src/tables/sales/SalesOrderTable.tsx:66
#: src/tables/sales/SalesOrderTable.tsx:83
msgid "Add Sales Order"
-msgstr "Adicionar Pedido de Vendas"
+msgstr ""
#: src/tables/sales/SalesOrderTable.tsx:111
msgid "Customer Reference"
-msgstr "Referência do Cliente"
+msgstr ""
#: src/tables/settings/CurrencyTable.tsx:28
msgid "Rate"
-msgstr "Taxa"
+msgstr ""
#: src/tables/settings/CurrencyTable.tsx:40
msgid "Exchange rates updated"
-msgstr "Taxas de câmbio atualizadas"
+msgstr ""
#: src/tables/settings/CurrencyTable.tsx:46
msgid "Exchange rate update error"
-msgstr "Erro ao atualizar taxa de câmbio"
+msgstr ""
#: src/tables/settings/CurrencyTable.tsx:57
msgid "Refresh currency exchange rates"
-msgstr "Atualizar taxas de câmbio"
+msgstr ""
#: src/tables/settings/CustomUnitsTable.tsx:50
msgid "Add Custom Unit"
-msgstr "Adicionar Unidade Personalizada"
+msgstr ""
#: src/tables/settings/CustomUnitsTable.tsx:60
msgid "Edit Custom Unit"
-msgstr "Editar Unidade Personalizada"
+msgstr ""
#: src/tables/settings/CustomUnitsTable.tsx:68
msgid "Delete Custom Unit"
-msgstr "Excluir Unidade Personalizada"
+msgstr ""
#: src/tables/settings/CustomUnitsTable.tsx:100
msgid "Add custom unit"
-msgstr "Adicionar unidade personalizada"
+msgstr ""
#: src/tables/settings/ErrorTable.tsx:29
msgid "When"
-msgstr "Quando"
+msgstr ""
#: src/tables/settings/ErrorTable.tsx:34
msgid "Path"
-msgstr "Caminho"
+msgstr ""
#: src/tables/settings/ErrorTable.tsx:39
msgid "Error Information"
-msgstr "Informação do erro"
+msgstr ""
#: src/tables/settings/ErrorTable.tsx:51
msgid "Delete error report"
-msgstr "Excluir relatório de erros"
+msgstr ""
#: src/tables/settings/ErrorTable.tsx:53
msgid "Error report deleted"
-msgstr "Relatório de erro excluído"
+msgstr ""
#: src/tables/settings/ErrorTable.tsx:54
msgid "Are you sure you want to delete this error report?"
-msgstr "Tem certeza de que deseja excluir este relatório de erro?"
+msgstr ""
#: src/tables/settings/ErrorTable.tsx:67
#: src/tables/settings/FailedTasksTable.tsx:57
msgid "Error Details"
-msgstr "Detalhes do Erro"
+msgstr ""
#: src/tables/settings/FailedTasksTable.tsx:24
#: src/tables/settings/PendingTasksTable.tsx:17
#: src/tables/settings/ScheduledTasksTable.tsx:19
msgid "Task"
-msgstr "Tarefa"
+msgstr ""
#: src/tables/settings/FailedTasksTable.tsx:30
#: src/tables/settings/PendingTasksTable.tsx:22
msgid "Task ID"
-msgstr "ID da Tarefa"
+msgstr ""
#: src/tables/settings/FailedTasksTable.tsx:34
msgid "Started"
-msgstr "Iniciado"
+msgstr ""
#: src/tables/settings/FailedTasksTable.tsx:40
msgid "Stopped"
-msgstr "Parado"
+msgstr ""
#: src/tables/settings/FailedTasksTable.tsx:46
msgid "Attempts"
-msgstr "Tentativas"
+msgstr ""
#: src/tables/settings/GroupTable.tsx:51
msgid "Group with id {id} not found"
-msgstr "Grupo com o id {id} não encontrado"
+msgstr ""
#: src/tables/settings/GroupTable.tsx:53
msgid "An error occurred while fetching group details"
-msgstr "Ocorreu um erro ao obter os detalhes do grupo"
+msgstr ""
#: src/tables/settings/GroupTable.tsx:77
msgid "Permission set"
-msgstr "Permissão definida"
+msgstr ""
#: src/tables/settings/GroupTable.tsx:126
msgid "Delete group"
-msgstr "Apagar grupo"
+msgstr ""
#: src/tables/settings/GroupTable.tsx:127
msgid "Group deleted"
-msgstr "Grupo excluído"
+msgstr ""
#: src/tables/settings/GroupTable.tsx:129
msgid "Are you sure you want to delete this group?"
-msgstr "Você tem certeza de que deseja excluir este grupo?"
+msgstr ""
#: src/tables/settings/GroupTable.tsx:134
#: src/tables/settings/GroupTable.tsx:146
msgid "Add group"
-msgstr "Adicionar grupo"
+msgstr ""
#: src/tables/settings/GroupTable.tsx:158
msgid "Edit group"
-msgstr "Editar grupo"
+msgstr ""
#: src/tables/settings/PendingTasksTable.tsx:30
msgid "Created"
-msgstr "Criado"
+msgstr ""
#: src/tables/settings/PendingTasksTable.tsx:36
msgid "Arguments"
-msgstr "Argumentos"
+msgstr ""
#: src/tables/settings/ProjectCodeTable.tsx:42
msgid "Add Project Code"
-msgstr "Adicionar Código do Projeto"
+msgstr ""
#: src/tables/settings/ProjectCodeTable.tsx:54
msgid "Edit Project Code"
-msgstr "Editar Código do Projeto"
+msgstr ""
#: src/tables/settings/ProjectCodeTable.tsx:62
msgid "Delete Project Code"
-msgstr "Excluir Código do Projeto"
+msgstr ""
#: src/tables/settings/ProjectCodeTable.tsx:94
msgid "Add project code"
-msgstr "Adicionar código do projeto"
+msgstr ""
#: src/tables/settings/ScheduledTasksTable.tsx:25
msgid "Last Run"
-msgstr "Última Execução"
+msgstr ""
#: src/tables/settings/ScheduledTasksTable.tsx:47
msgid "Next Run"
-msgstr "Próxima Execução"
+msgstr ""
#: src/tables/settings/UserTable.tsx:66
msgid "User with id {id} not found"
-msgstr "Usuário com o id {id} não encontrado"
+msgstr ""
#: src/tables/settings/UserTable.tsx:68
msgid "An error occurred while fetching user details"
-msgstr "Ocorreu um erro ao obter os detalhes do usuário"
+msgstr ""
#: src/tables/settings/UserTable.tsx:86
msgid "Is Active"
-msgstr "Está Ativo"
+msgstr ""
#: src/tables/settings/UserTable.tsx:87
msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts."
-msgstr "Designa se esse usuário deve ser tratado como ativo. Desmarque isso em vez de excluir contas."
+msgstr ""
#: src/tables/settings/UserTable.tsx:91
msgid "Is Staff"
-msgstr "É da Equipe"
+msgstr ""
#: src/tables/settings/UserTable.tsx:92
msgid "Designates whether the user can log into the django admin site."
-msgstr "Designa se o usuário pode fazer entrar no site administrativo do django."
+msgstr ""
#: src/tables/settings/UserTable.tsx:96
msgid "Is Superuser"
-msgstr "É Superusuário"
+msgstr ""
#: src/tables/settings/UserTable.tsx:97
msgid "Designates that this user has all permissions without explicitly assigning them."
-msgstr "Indica que este usuário tem todas as permissões sem atribuí-las explicitamente."
+msgstr ""
#: src/tables/settings/UserTable.tsx:107
msgid "You cannot edit the rights for the currently logged-in user."
-msgstr "Você não pode editar os direitos para o usuário conectado no momento."
+msgstr ""
#: src/tables/settings/UserTable.tsx:133
msgid "No groups"
-msgstr "Sem grupos"
+msgstr ""
#: src/tables/settings/UserTable.tsx:201
msgid "Delete user"
-msgstr "Excluir usuário"
+msgstr ""
#: src/tables/settings/UserTable.tsx:202
msgid "User deleted"
-msgstr "Usuário excluído"
+msgstr ""
#: src/tables/settings/UserTable.tsx:204
msgid "Are you sure you want to delete this user?"
-msgstr "Tem certeza de que deseja excluir este usuário?"
+msgstr ""
#: src/tables/settings/UserTable.tsx:214
#: src/tables/settings/UserTable.tsx:230
msgid "Add user"
-msgstr "Adicionar usuário"
+msgstr ""
#: src/tables/settings/UserTable.tsx:222
msgid "Added user"
-msgstr "Usuário adicionado"
+msgstr ""
#: src/tables/settings/UserTable.tsx:239
msgid "Edit user"
-msgstr "Editar usuário"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
-msgstr "Este item de estoque está em produção"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
-msgstr "Este item em estoque foi reservado para um pedido"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
-msgstr "Este item em estoque foi reservado para um cliente"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
-msgstr "Este item em estoque foi instalado em outro item de estoque"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
-msgstr "Este item de estoque foi consumido por um pedido de produção"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
-msgstr "Este item de estoque expirou"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
-msgstr "Este item de estoque está velho"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
-msgstr "Este item de estoque está totalmente alocado"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
-msgstr "Este item de estoque está parcialmente alocado"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
-msgstr "Este item de estoque foi esgotado"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
-msgstr "Mostrar estoque de peças ativas"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
-msgstr "Filtrar por estado do estoque"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
-msgstr "Mostrar estoque para peças montadas"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
-msgstr "Alocado"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
-msgstr "Mostrar itens que foram alocados"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
-msgstr "Mostrar itens que estão disponíveis"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
-msgstr "Incluir Sublocais"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
-msgstr "Incluir estoque em sublocais"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
-msgstr "Esgotado"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
-msgstr "Mostrar itens de estoque esgotados"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
-msgstr "Mostrar itens que estão em estoque"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
-msgstr "Em Produção"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
-msgstr "Mostrar itens que estão em produção"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
-msgstr "Incluir itens de estoque para peças variantes"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
-msgstr "Mostrar itens de estoque que estão instalados em outros itens"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
-msgstr "Enviar para Cliente"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
-msgstr "Mostrar itens enviados para um cliente"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
-msgstr "É Serializado"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
-msgstr "Mostrar itens com um número de série"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
-msgstr "Possuí Código de Lote"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
-msgstr "Mostrar itens com um código de lote"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
-msgstr "Monitorado"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
-msgstr "Mostrar itens monitorados"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
-msgstr "Tem Preço de Compra"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
-msgstr "Mostrar itens com preço de compra"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
-msgstr "Localização Externa"
+msgstr ""
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
-msgstr "Mostrar itens com localização externa"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
-msgstr "Incluir sublocais nos resultados"
+msgstr ""
#: src/tables/stock/StockLocationTable.tsx:42
msgid "Show structural locations"
-msgstr "Mostrar locais estruturais"
+msgstr ""
#: src/tables/stock/StockLocationTable.tsx:46
msgid "Show external locations"
-msgstr "Mostrar locais externos"
+msgstr ""
#: src/tables/stock/StockLocationTable.tsx:50
msgid "Has location type"
-msgstr "Tem Tipo de localização"
+msgstr ""
#: src/tables/stock/StockLocationTable.tsx:87
#: src/tables/stock/StockLocationTable.tsx:116
msgid "Add Stock Location"
-msgstr "Adicionar Local de Estoque"
+msgstr ""
#: src/tables/stock/StockLocationTable.tsx:106
msgid "Edit Stock Location"
-msgstr "Editar Local de Estoque"
+msgstr ""
#: src/views/MobileAppView.tsx:14
msgid "Mobile viewport detected"
-msgstr "Visualização móvel detectada"
+msgstr ""
#: src/views/MobileAppView.tsx:17
msgid "Platform UI is optimized for Tablets and Desktops, you can use the official app for a mobile experience."
-msgstr "A interface de usuário da plataforma é otimizada para Tablets e Desktops, você pode usar o app oficial para uma experiência para celulares."
+msgstr ""
#: src/views/MobileAppView.tsx:23
msgid "Read the docs"
-msgstr "Leia a documentação"
+msgstr ""
diff --git a/src/frontend/src/locales/ru/messages.po b/src/frontend/src/locales/ru/messages.po
index 813b6621a6f0..c2efe4abd189 100644
--- a/src/frontend/src/locales/ru/messages.po
+++ b/src/frontend/src/locales/ru/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: ru\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:26\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
@@ -53,8 +53,8 @@ msgstr "Обновить"
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
@@ -274,26 +274,26 @@ msgstr "Состояние: <0>рабочий 0> ({0}), <1>плагины1>{
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
msgstr "Ошибка"
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
msgstr "Поиск"
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
msgstr "Загрузка"
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
msgstr "Ничего не найдено"
@@ -308,7 +308,7 @@ msgstr "Удалить связанное изображение?"
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
msgstr "Удалить"
@@ -316,8 +316,8 @@ msgstr "Удалить"
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
msgstr "Отменить"
@@ -398,7 +398,7 @@ msgid "Delete item"
msgstr ""
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
msgstr ""
@@ -416,7 +416,7 @@ msgid "Read More"
msgstr "Подробнее"
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
msgstr "Неизвестная ошибка"
@@ -458,11 +458,19 @@ msgid "Scan QR code"
msgstr "Сканировать QR код"
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
msgstr ""
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
msgstr ""
@@ -702,7 +710,7 @@ msgstr "Настройки аккаунта"
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr ""
@@ -766,8 +774,8 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
msgstr "Уведомления"
@@ -777,17 +785,17 @@ msgstr "У вас нет непрочитанных уведомлений."
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
msgstr ""
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
msgstr "Пометить как прочитанное"
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
@@ -826,12 +834,12 @@ msgid "No results available for search query"
msgstr "Нет доступных результатов для поискового запроса"
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
msgstr "Места хранения"
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
msgstr "Неизвестная модель: {model}"
@@ -861,88 +869,96 @@ msgid "Part Parameter Templates"
msgstr ""
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
msgstr ""
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
msgstr "Детали поставщиков"
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
msgstr ""
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
msgstr "Детали производителей"
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
msgstr ""
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
msgstr ""
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
msgstr "Складские позиции"
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
msgstr ""
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
msgstr ""
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
msgstr ""
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
msgstr ""
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
msgstr ""
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
msgstr ""
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
msgstr "Компании"
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
msgstr ""
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
msgstr ""
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
msgstr ""
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
@@ -950,79 +966,79 @@ msgstr ""
msgid "Purchase Orders"
msgstr "Заказы на закупку"
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
msgstr ""
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
msgstr ""
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
msgstr ""
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
msgstr "Заказы на продажу"
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
msgstr ""
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
msgstr ""
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
msgstr ""
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
msgstr "Заказы на возврат"
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
msgstr ""
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
msgstr ""
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
msgstr ""
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
msgstr ""
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
msgstr ""
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
msgstr ""
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
msgstr ""
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
@@ -1038,8 +1054,8 @@ msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
msgstr ""
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -2435,7 +2442,7 @@ msgid "Actions for {0}"
msgstr ""
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
msgstr ""
@@ -2496,7 +2503,7 @@ msgid "The history is kept in this browser's local storage. So it won't be share
msgstr ""
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
msgstr "История"
@@ -2828,7 +2835,7 @@ msgstr ""
msgid "Build Orders"
msgstr "Заказы на сборку"
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
msgstr ""
@@ -2872,7 +2879,11 @@ msgstr ""
msgid "Go to the start page"
msgstr ""
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
+
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
msgstr ""
@@ -2916,7 +2927,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
msgstr ""
@@ -2926,7 +2937,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
msgstr ""
@@ -2999,7 +3010,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
msgstr ""
@@ -3095,7 +3106,7 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
msgstr ""
@@ -3129,7 +3140,7 @@ msgid "Building"
msgstr ""
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
msgstr ""
@@ -3198,7 +3209,7 @@ msgid "Variants"
msgstr ""
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
msgstr ""
@@ -3290,19 +3301,19 @@ msgstr ""
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
msgstr ""
@@ -3314,56 +3325,67 @@ msgstr ""
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr ""
-
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr ""
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
msgstr ""
@@ -3469,101 +3491,102 @@ msgstr ""
msgid "Remove filter"
msgstr "Убрать фильтрацию"
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
msgstr "Выбрать фильтр"
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
msgstr "Отфильтровать"
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
msgstr "Значение"
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
msgstr "Добавить фильтр"
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
msgstr ""
@@ -3596,7 +3619,7 @@ msgstr ""
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
msgstr ""
@@ -3694,7 +3717,7 @@ msgstr ""
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
msgstr ""
@@ -3718,8 +3741,8 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
msgstr ""
@@ -3748,7 +3771,7 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
msgstr ""
@@ -3924,7 +3947,7 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
msgstr ""
@@ -4016,11 +4039,11 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
msgstr ""
@@ -4054,26 +4077,26 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
msgstr ""
@@ -4139,7 +4162,7 @@ msgid "Filter by part active status"
msgstr ""
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
msgstr ""
@@ -4211,31 +4234,63 @@ msgstr ""
msgid "Not Virtual"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
@@ -4306,10 +4361,6 @@ msgstr ""
msgid "Author"
msgstr ""
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr ""
-
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
msgstr ""
@@ -4479,7 +4530,7 @@ msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
msgstr ""
@@ -4869,155 +4920,243 @@ msgstr ""
msgid "Edit user"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
msgstr ""
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
+
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
msgstr ""
diff --git a/src/frontend/src/locales/sk/messages.po b/src/frontend/src/locales/sk/messages.po
index 1eb2ca96c788..5bd8662f3b70 100644
--- a/src/frontend/src/locales/sk/messages.po
+++ b/src/frontend/src/locales/sk/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: sk\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:26\n"
"Last-Translator: \n"
"Language-Team: Slovak\n"
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
@@ -53,8 +53,8 @@ msgstr ""
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
@@ -274,26 +274,26 @@ msgstr ""
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
msgstr ""
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
msgstr ""
@@ -308,7 +308,7 @@ msgstr ""
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
msgstr ""
@@ -316,8 +316,8 @@ msgstr ""
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
msgstr ""
@@ -398,7 +398,7 @@ msgid "Delete item"
msgstr ""
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
msgstr ""
@@ -416,7 +416,7 @@ msgid "Read More"
msgstr ""
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
msgstr ""
@@ -458,11 +458,19 @@ msgid "Scan QR code"
msgstr ""
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
msgstr ""
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
msgstr ""
@@ -702,7 +710,7 @@ msgstr ""
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr ""
@@ -766,8 +774,8 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
msgstr ""
@@ -777,17 +785,17 @@ msgstr ""
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
msgstr ""
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
msgstr ""
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
@@ -826,12 +834,12 @@ msgid "No results available for search query"
msgstr ""
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
msgstr ""
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
msgstr ""
@@ -861,88 +869,96 @@ msgid "Part Parameter Templates"
msgstr ""
#: src/components/render/ModelType.tsx:36
+msgid "Part Test Template"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:37
+msgid "Part Test Templates"
+msgstr ""
+
+#: src/components/render/ModelType.tsx:43
#: src/pages/company/SupplierPartDetail.tsx:78
#: src/tables/purchasing/SupplierPartTable.tsx:66
msgid "Supplier Part"
msgstr ""
-#: src/components/render/ModelType.tsx:37
+#: src/components/render/ModelType.tsx:44
msgid "Supplier Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:44
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
msgstr ""
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
msgstr ""
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
msgstr ""
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
msgstr ""
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
msgstr ""
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
msgstr ""
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
msgstr ""
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
msgstr ""
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
msgstr ""
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
msgstr ""
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
msgstr ""
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
msgstr ""
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
msgstr ""
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
msgstr ""
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
msgstr ""
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
@@ -950,79 +966,79 @@ msgstr ""
msgid "Purchase Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
msgstr ""
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
msgstr ""
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
msgstr ""
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
msgstr ""
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
msgstr ""
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
msgstr ""
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
msgstr ""
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
msgstr ""
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
msgstr ""
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
msgstr ""
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
msgstr ""
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
msgstr ""
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
msgstr ""
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
msgstr ""
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
@@ -1038,8 +1054,8 @@ msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
msgstr ""
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -2435,7 +2442,7 @@ msgid "Actions for {0}"
msgstr ""
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
msgstr ""
@@ -2496,7 +2503,7 @@ msgid "The history is kept in this browser's local storage. So it won't be share
msgstr ""
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
msgstr ""
@@ -2828,7 +2835,7 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
msgstr ""
@@ -2872,7 +2879,11 @@ msgstr ""
msgid "Go to the start page"
msgstr ""
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
+msgstr ""
+
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
msgstr ""
@@ -2916,7 +2927,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
msgstr ""
@@ -2926,7 +2937,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
msgstr ""
@@ -2999,7 +3010,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
msgstr ""
@@ -3095,7 +3106,7 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
msgstr ""
@@ -3129,7 +3140,7 @@ msgid "Building"
msgstr ""
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
msgstr ""
@@ -3198,7 +3209,7 @@ msgid "Variants"
msgstr ""
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
msgstr ""
@@ -3290,19 +3301,19 @@ msgstr ""
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
msgstr ""
@@ -3314,56 +3325,67 @@ msgstr ""
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
msgstr ""
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr ""
-
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr ""
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr ""
+
+#: src/tables/ColumnRenderers.tsx:137
msgid "Target Date"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
msgstr ""
@@ -3469,101 +3491,102 @@ msgstr ""
msgid "Remove filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
msgstr ""
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
msgstr ""
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
msgstr ""
@@ -3596,7 +3619,7 @@ msgstr ""
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
msgstr ""
@@ -3694,7 +3717,7 @@ msgstr ""
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
msgstr ""
@@ -3718,8 +3741,8 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
msgstr ""
@@ -3748,7 +3771,7 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
msgstr ""
@@ -3924,7 +3947,7 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
msgstr ""
@@ -4016,11 +4039,11 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
msgstr ""
@@ -4054,26 +4077,26 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
msgstr ""
@@ -4139,7 +4162,7 @@ msgid "Filter by part active status"
msgstr ""
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
msgstr ""
@@ -4211,31 +4234,63 @@ msgstr ""
msgid "Not Virtual"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
@@ -4306,10 +4361,6 @@ msgstr ""
msgid "Author"
msgstr ""
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr ""
-
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
msgstr ""
@@ -4479,7 +4530,7 @@ msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
msgstr ""
@@ -4869,155 +4920,243 @@ msgstr ""
msgid "Edit user"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
msgstr ""
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
msgstr ""
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
+msgstr ""
+
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
msgstr ""
diff --git a/src/frontend/src/locales/sl/messages.po b/src/frontend/src/locales/sl/messages.po
index 5390bb47a377..7510594a1117 100644
--- a/src/frontend/src/locales/sl/messages.po
+++ b/src/frontend/src/locales/sl/messages.po
@@ -5054,4 +5054,3 @@ msgstr ""
#: src/views/MobileAppView.tsx:23
msgid "Read the docs"
msgstr ""
-
diff --git a/src/frontend/src/locales/sr/messages.po b/src/frontend/src/locales/sr/messages.po
index 1590f4289c68..0d5ec5697753 100644
--- a/src/frontend/src/locales/sr/messages.po
+++ b/src/frontend/src/locales/sr/messages.po
@@ -5054,4 +5054,3 @@ msgstr ""
#: src/views/MobileAppView.tsx:23
msgid "Read the docs"
msgstr ""
-
diff --git a/src/frontend/src/locales/sv/messages.po b/src/frontend/src/locales/sv/messages.po
index 567966f1e282..f61a935ddf0d 100644
--- a/src/frontend/src/locales/sv/messages.po
+++ b/src/frontend/src/locales/sv/messages.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: sv\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-18 03:53\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -181,7 +181,7 @@ msgstr ""
#: src/components/forms/AuthenticationForm.tsx:197
msgid "Please confirm your email address to complete the registration"
-msgstr ""
+msgstr "Bekräfta din e-postadress för att slutföra registreringen"
#: src/components/forms/AuthenticationForm.tsx:240
msgid "This will be used for a confirmation"
@@ -702,7 +702,7 @@ msgstr "Kontoinställningar"
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
msgstr ""
@@ -942,7 +942,7 @@ msgid "Purchase Order"
msgstr ""
#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
@@ -964,7 +964,7 @@ msgid "Sales Order"
msgstr ""
#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
@@ -985,7 +985,7 @@ msgid "Return Order"
msgstr ""
#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
@@ -2117,7 +2117,7 @@ msgstr "Utloggningen lyckad"
#: src/functions/auth.tsx:71
msgid "You have been logged out"
-msgstr ""
+msgstr "Du har blivit utloggad"
#: src/functions/auth.tsx:108
msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too."
@@ -2691,7 +2691,7 @@ msgstr ""
#: src/pages/Index/Settings/AdminCenter/Index.tsx:81
msgid "Currencies"
-msgstr ""
+msgstr "Valutor"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:99
msgid "Custom Units"
@@ -2828,7 +2828,7 @@ msgstr ""
msgid "Build Orders"
msgstr "Byggordrar"
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
msgstr ""
diff --git a/src/frontend/src/locales/th/messages.po b/src/frontend/src/locales/th/messages.po
index da9f3b112aa0..a8150e49c469 100644
--- a/src/frontend/src/locales/th/messages.po
+++ b/src/frontend/src/locales/th/messages.po
@@ -5054,4 +5054,3 @@ msgstr ""
#: src/views/MobileAppView.tsx:23
msgid "Read the docs"
msgstr ""
-
diff --git a/src/frontend/src/locales/tr/messages.po b/src/frontend/src/locales/tr/messages.po
index efb60bb84caa..287f3930a5a4 100644
--- a/src/frontend/src/locales/tr/messages.po
+++ b/src/frontend/src/locales/tr/messages.po
@@ -5054,4 +5054,3 @@ msgstr ""
#: src/views/MobileAppView.tsx:23
msgid "Read the docs"
msgstr "Belgeleri okuyun"
-
diff --git a/src/frontend/src/locales/vi/messages.po b/src/frontend/src/locales/vi/messages.po
index 9035112c2ae5..7c3f48132df7 100644
--- a/src/frontend/src/locales/vi/messages.po
+++ b/src/frontend/src/locales/vi/messages.po
@@ -5054,4 +5054,3 @@ msgstr "Giao diện nền tảng được tối ưu cho máy tính bảng và m
#: src/views/MobileAppView.tsx:23
msgid "Read the docs"
msgstr "Đọc tài liệu"
-
diff --git a/src/frontend/src/locales/zh/messages.po b/src/frontend/src/locales/zh/messages.po
index 0a25c2b9c895..44e1fa5d565a 100644
--- a/src/frontend/src/locales/zh/messages.po
+++ b/src/frontend/src/locales/zh/messages.po
@@ -8,57 +8,57 @@ msgstr ""
"Language: zh\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-02-15 02:43\n"
+"PO-Revision-Date: 2024-02-20 04:25\n"
"Last-Translator: \n"
-"Language-Team: Chinese Traditional\n"
+"Language-Team: Chinese Simplified\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
-"X-Crowdin-Language: zh-TW\n"
+"X-Crowdin-Language: zh-CN\n"
"X-Crowdin-File: /[inventree.InvenTree] l10/src/frontend/src/locales/en/messages.po\n"
"X-Crowdin-File-ID: 205\n"
#: src/components/DashboardItemProxy.tsx:34
msgid "Title"
-msgstr ""
+msgstr "标题"
#: src/components/forms/ApiForm.tsx:132
#: src/functions/forms.tsx:259
msgid "Form Error"
-msgstr ""
+msgstr "表单错误"
#: src/components/forms/ApiForm.tsx:323
#: src/components/widgets/MarkdownEditor.tsx:146
msgid "Success"
-msgstr ""
+msgstr "操作成功"
#: src/components/forms/ApiForm.tsx:396
msgid "Form Errors Exist"
-msgstr ""
+msgstr "表单存在错误"
#: src/components/forms/ApiForm.tsx:451
#: src/components/images/DetailsImage.tsx:223
#: src/contexts/ThemeContext.tsx:64
#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
msgid "Submit"
-msgstr ""
+msgstr "提交"
#: src/components/forms/ApiForm.tsx:487
#: src/tables/plugin/PluginListTable.tsx:436
msgid "Update"
-msgstr ""
+msgstr "更新"
#: src/components/forms/ApiForm.tsx:507
#: src/components/items/ActionDropdown.tsx:191
#: src/functions/forms.tsx:299
#: src/hooks/UseForm.tsx:120
#: src/pages/Index/Scan.tsx:332
-#: src/pages/Notifications.tsx:79
-#: src/tables/InvenTreeTable.tsx:456
+#: src/pages/Notifications.tsx:123
+#: src/tables/InvenTreeTable.tsx:454
#: src/tables/RowActions.tsx:70
#: src/tables/plugin/PluginListTable.tsx:467
msgid "Delete"
-msgstr ""
+msgstr "删除"
#: src/components/forms/AuthenticationForm.tsx:48
#: src/components/forms/AuthenticationForm.tsx:74
@@ -68,11 +68,11 @@ msgstr ""
#: src/components/forms/AuthenticationForm.tsx:50
msgid "Login successful"
-msgstr ""
+msgstr "登录成功"
#: src/components/forms/AuthenticationForm.tsx:51
msgid "Welcome back!"
-msgstr ""
+msgstr "欢迎回来!"
#: src/components/forms/AuthenticationForm.tsx:53
#~ msgid "Login successfull"
@@ -80,14 +80,14 @@ msgstr ""
#: src/components/forms/AuthenticationForm.tsx:58
msgid "Login failed"
-msgstr ""
+msgstr "登录失败"
#: src/components/forms/AuthenticationForm.tsx:59
#: src/components/forms/AuthenticationForm.tsx:79
#: src/components/forms/AuthenticationForm.tsx:216
#: src/functions/auth.tsx:116
msgid "Check your input and try again."
-msgstr ""
+msgstr "请检查您的输入并重试。"
#: src/components/forms/AuthenticationForm.tsx:65
#: src/functions/auth.tsx:74
@@ -97,16 +97,16 @@ msgstr ""
#: src/components/forms/AuthenticationForm.tsx:70
#: src/functions/auth.tsx:107
msgid "Mail delivery successful"
-msgstr ""
+msgstr "邮件发送成功"
#: src/components/forms/AuthenticationForm.tsx:71
msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
-msgstr ""
+msgstr "请检查您的收件箱以查看登录链接。如果您有账户,您将收到登录链接。如未收到,请检查邮箱垃圾箱。"
#: src/components/forms/AuthenticationForm.tsx:78
#: src/components/forms/AuthenticationForm.tsx:215
msgid "Input error"
-msgstr ""
+msgstr "输入错误"
#: src/components/forms/AuthenticationForm.tsx:98
msgid "Or continue with other methods"
@@ -115,28 +115,28 @@ msgstr ""
#: src/components/forms/AuthenticationForm.tsx:109
#: src/components/forms/AuthenticationForm.tsx:233
msgid "Username"
-msgstr ""
+msgstr "用户名"
#: src/components/forms/AuthenticationForm.tsx:110
#: src/components/forms/AuthenticationForm.tsx:234
msgid "Your username"
-msgstr ""
+msgstr "你的用户名"
#: src/components/forms/AuthenticationForm.tsx:115
#: src/components/forms/AuthenticationForm.tsx:246
#: src/pages/Auth/Set-Password.tsx:106
msgid "Password"
-msgstr ""
+msgstr "密码"
#: src/components/forms/AuthenticationForm.tsx:116
#: src/components/forms/AuthenticationForm.tsx:247
msgid "Your password"
-msgstr ""
+msgstr "您的密码"
#: src/components/forms/AuthenticationForm.tsx:128
#: src/pages/Auth/Reset.tsx:26
msgid "Reset password"
-msgstr ""
+msgstr "重置密码"
#: src/components/forms/AuthenticationForm.tsx:131
#~ msgid "Log in"
@@ -151,17 +151,17 @@ msgstr ""
#: src/pages/Auth/Reset.tsx:31
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
msgid "Email"
-msgstr ""
+msgstr "邮箱"
#: src/components/forms/AuthenticationForm.tsx:138
#: src/pages/Auth/Reset.tsx:32
#: src/pages/Auth/Set-Password.tsx:107
msgid "We will send you a link to login - if you are registered"
-msgstr ""
+msgstr "我们将向您发送登录链接 - 如果您已注册"
#: src/components/forms/AuthenticationForm.tsx:154
msgid "Send me an email"
-msgstr ""
+msgstr "给我发一封电子邮件"
#: src/components/forms/AuthenticationForm.tsx:156
msgid "Use username and password"
@@ -169,11 +169,11 @@ msgstr ""
#: src/components/forms/AuthenticationForm.tsx:165
msgid "Log In"
-msgstr ""
+msgstr "登录"
#: src/components/forms/AuthenticationForm.tsx:167
msgid "Send Email"
-msgstr ""
+msgstr "发送电子邮件"
#: src/components/forms/AuthenticationForm.tsx:196
msgid "Registration successful"
@@ -215,7 +215,7 @@ msgstr ""
#: src/components/forms/HostOptionsForm.tsx:36
#: src/components/forms/HostOptionsForm.tsx:66
msgid "Host"
-msgstr ""
+msgstr "主机"
#: src/components/forms/HostOptionsForm.tsx:42
#: src/components/forms/HostOptionsForm.tsx:69
@@ -229,44 +229,44 @@ msgstr ""
#: src/tables/settings/GroupTable.tsx:103
#: src/tables/settings/PendingTasksTable.tsx:26
msgid "Name"
-msgstr ""
+msgstr "名称"
#: src/components/forms/HostOptionsForm.tsx:74
msgid "No one here..."
-msgstr ""
+msgstr "这里没有人..."
#: src/components/forms/HostOptionsForm.tsx:85
msgid "Add Host"
-msgstr ""
+msgstr "添加主机"
#: src/components/forms/HostOptionsForm.tsx:89
#: src/components/widgets/MarkdownEditor.tsx:73
msgid "Save"
-msgstr ""
+msgstr "保存"
#: src/components/forms/InstanceOptions.tsx:43
msgid "Select destination instance"
-msgstr ""
+msgstr "选择对象目标"
#: src/components/forms/InstanceOptions.tsx:71
msgid "Edit possible host options"
-msgstr ""
+msgstr "编辑可能的主机选项"
#: src/components/forms/InstanceOptions.tsx:98
msgid "Version: {0}"
-msgstr ""
+msgstr "版本:{0}"
#: src/components/forms/InstanceOptions.tsx:100
msgid "API:{0}"
-msgstr ""
+msgstr "API:{0}"
#: src/components/forms/InstanceOptions.tsx:102
msgid "Name: {0}"
-msgstr ""
+msgstr "名称:{0}"
#: src/components/forms/InstanceOptions.tsx:104
msgid "State: <0>worker0> ({0}), <1>plugins1>{1}"
-msgstr ""
+msgstr "状态: <0>worker0> ({0}), <1>plugins1>{1}"
#: src/components/forms/fields/ApiFormField.tsx:271
#: src/components/nav/SearchDrawer.tsx:411
@@ -274,28 +274,28 @@ msgstr ""
#: src/components/widgets/MarkdownEditor.tsx:154
#: src/pages/ErrorPage.tsx:12
#: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:416
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:414
+#: src/tables/InvenTreeTable.tsx:487
#: src/tables/plugin/PluginListTable.tsx:393
msgid "Error"
-msgstr ""
+msgstr "错误"
-#: src/components/forms/fields/RelatedModelField.tsx:242
+#: src/components/forms/fields/RelatedModelField.tsx:288
#: src/pages/Index/Settings/UserSettings.tsx:64
#: src/tables/Search.tsx:23
msgid "Search"
-msgstr ""
+msgstr "搜索"
-#: src/components/forms/fields/RelatedModelField.tsx:243
+#: src/components/forms/fields/RelatedModelField.tsx:289
#: src/components/modals/AboutInvenTreeModal.tsx:81
#: src/components/widgets/WidgetLayout.tsx:134
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309
msgid "Loading"
-msgstr ""
+msgstr "正在加载"
-#: src/components/forms/fields/RelatedModelField.tsx:245
+#: src/components/forms/fields/RelatedModelField.tsx:291
msgid "No results found"
-msgstr ""
+msgstr "未找到结果"
#: src/components/images/DetailsImage.tsx:61
msgid "Remove Image"
@@ -308,19 +308,19 @@ msgstr ""
#: src/components/images/DetailsImage.tsx:67
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:183
+#: src/pages/stock/StockDetail.tsx:192
msgid "Remove"
-msgstr ""
+msgstr "移除"
#: src/components/images/DetailsImage.tsx:67
#: src/contexts/ThemeContext.tsx:64
#: src/functions/forms.tsx:196
#: src/hooks/UseForm.tsx:38
-#: src/tables/FilterSelectDrawer.tsx:209
-#: src/tables/InvenTreeTable.tsx:457
+#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/InvenTreeTable.tsx:455
#: src/tables/plugin/PluginListTable.tsx:356
msgid "Cancel"
-msgstr ""
+msgstr "取消"
#: src/components/images/DetailsImage.tsx:95
msgid "Drag and drop to upload"
@@ -357,263 +357,271 @@ msgstr ""
#: src/components/images/Thumbnail.tsx:14
#: src/components/images/Thumbnail.tsx:51
msgid "Thumbnail"
-msgstr ""
+msgstr "缩略图"
#: src/components/items/ActionDropdown.tsx:102
#: src/pages/build/BuildDetail.tsx:203
msgid "Barcode Actions"
-msgstr ""
+msgstr "条形码操作"
#: src/components/items/ActionDropdown.tsx:119
msgid "View"
-msgstr ""
+msgstr "视图"
#: src/components/items/ActionDropdown.tsx:120
msgid "View barcode"
-msgstr ""
+msgstr "查看条形码"
#: src/components/items/ActionDropdown.tsx:136
msgid "Link Barcode"
-msgstr ""
+msgstr "关联二维码"
#: src/components/items/ActionDropdown.tsx:137
msgid "Link custom barcode"
-msgstr ""
+msgstr "链接自定义条形码"
#: src/components/items/ActionDropdown.tsx:153
msgid "Unlink Barcode"
-msgstr ""
+msgstr "解绑条形码"
#: src/components/items/ActionDropdown.tsx:154
msgid "Unlink custom barcode"
-msgstr ""
+msgstr "解绑自定义条形码链接"
#: src/components/items/ActionDropdown.tsx:172
#: src/tables/RowActions.tsx:50
msgid "Edit"
-msgstr ""
+msgstr "编辑"
#: src/components/items/ActionDropdown.tsx:192
msgid "Delete item"
-msgstr ""
+msgstr "删除项目"
#: src/components/items/ActionDropdown.tsx:210
-#: src/pages/stock/StockDetail.tsx:200
+#: src/pages/stock/StockDetail.tsx:209
#: src/tables/RowActions.tsx:30
msgid "Duplicate"
-msgstr ""
+msgstr "复制"
#: src/components/items/ActionDropdown.tsx:211
msgid "Duplicate item"
-msgstr ""
+msgstr "重复项目"
#: src/components/items/CopyButton.tsx:18
msgid "Copy to clipboard"
-msgstr ""
+msgstr "复制到剪贴板"
#: src/components/items/DocTooltip.tsx:94
msgid "Read More"
-msgstr ""
+msgstr "了解更多"
#: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:408
+#: src/tables/InvenTreeTable.tsx:406
msgid "Unknown error"
-msgstr ""
+msgstr "未知错误"
#: src/components/items/ErrorItem.tsx:10
msgid "An error occurred:"
-msgstr ""
+msgstr "出现了一个错误"
#: src/components/items/GettingStartedCarousel.tsx:64
msgid "Read more"
-msgstr ""
+msgstr "了解更多"
#: src/components/items/InfoItem.tsx:24
msgid "None"
-msgstr ""
+msgstr "无"
#: src/components/items/InvenTreeLogo.tsx:23
msgid "InvenTree Logo"
-msgstr ""
+msgstr "InvenTree Logo"
#: src/components/items/OnlyStaff.tsx:9
#: src/components/modals/AboutInvenTreeModal.tsx:44
msgid "This information is only available for staff users"
-msgstr ""
+msgstr "此信息仅供员工使用"
#: src/components/items/Placeholder.tsx:14
msgid "This feature/button/site is a placeholder for a feature that is not implemented, only partial or intended for testing."
-msgstr ""
+msgstr "此功能/按钮/站点是一个未实现的功能的占位符,只是部分或打算测试的功能。"
#: src/components/items/Placeholder.tsx:17
msgid "PLH"
-msgstr ""
+msgstr "PLH"
#: src/components/items/Placeholder.tsx:31
msgid "This panel is a placeholder."
-msgstr ""
+msgstr "此面板是一个占位符。"
#: src/components/items/ScanButton.tsx:15
msgid "Scan QR code"
-msgstr ""
+msgstr "扫描二维码"
#: src/components/items/YesNoButton.tsx:16
+msgid "Pass"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:17
+msgid "Fail"
+msgstr ""
+
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:51
msgid "Yes"
-msgstr ""
+msgstr "确定"
-#: src/components/items/YesNoButton.tsx:16
+#: src/components/items/YesNoButton.tsx:32
#: src/tables/Filter.tsx:52
msgid "No"
-msgstr ""
+msgstr "取消"
#: src/components/modals/AboutInvenTreeModal.tsx:99
msgid "Version Information"
-msgstr ""
+msgstr "版本信息"
#: src/components/modals/AboutInvenTreeModal.tsx:103
msgid "Your InvenTree version status is"
-msgstr ""
+msgstr "您的Inventree 版本状态是"
#: src/components/modals/AboutInvenTreeModal.tsx:107
msgid "Development Version"
-msgstr ""
+msgstr "开发版"
#: src/components/modals/AboutInvenTreeModal.tsx:111
msgid "Up to Date"
-msgstr ""
+msgstr "已是最新版本"
#: src/components/modals/AboutInvenTreeModal.tsx:115
msgid "Update Available"
-msgstr ""
+msgstr "有可用更新"
#: src/components/modals/AboutInvenTreeModal.tsx:125
msgid "InvenTree Version"
-msgstr ""
+msgstr "InvenTree 版本"
#: src/components/modals/AboutInvenTreeModal.tsx:131
msgid "Commit Hash"
-msgstr ""
+msgstr "提交哈希值"
#: src/components/modals/AboutInvenTreeModal.tsx:136
msgid "Commit Date"
-msgstr ""
+msgstr "提交日期"
#: src/components/modals/AboutInvenTreeModal.tsx:141
msgid "Commit Branch"
-msgstr ""
+msgstr "提交分支"
#: src/components/modals/AboutInvenTreeModal.tsx:146
#: src/components/modals/ServerInfoModal.tsx:133
msgid "API Version"
-msgstr ""
+msgstr "API 版本"
#: src/components/modals/AboutInvenTreeModal.tsx:149
msgid "Python Version"
-msgstr ""
+msgstr "Python 版本"
#: src/components/modals/AboutInvenTreeModal.tsx:152
msgid "Django Version"
-msgstr ""
+msgstr "Django版本"
#: src/components/modals/AboutInvenTreeModal.tsx:162
msgid "Links"
-msgstr ""
+msgstr "链接"
#: src/components/modals/AboutInvenTreeModal.tsx:168
msgid "InvenTree Documentation"
-msgstr ""
+msgstr "InvenTree 文档"
#: src/components/modals/AboutInvenTreeModal.tsx:169
msgid "View Code on GitHub"
-msgstr ""
+msgstr "在Github上查看源代码"
#: src/components/modals/AboutInvenTreeModal.tsx:170
msgid "Credits"
-msgstr ""
+msgstr "致谢"
#: src/components/modals/AboutInvenTreeModal.tsx:171
msgid "Mobile App"
-msgstr ""
+msgstr "手机 App"
#: src/components/modals/AboutInvenTreeModal.tsx:172
msgid "Submit Bug Report"
-msgstr ""
+msgstr "提交问题报告"
#: src/components/modals/AboutInvenTreeModal.tsx:183
msgid "Copy version information"
-msgstr ""
+msgstr "复制版本信息"
#: src/components/modals/AboutInvenTreeModal.tsx:192
#: src/components/modals/ServerInfoModal.tsx:147
msgid "Dismiss"
-msgstr ""
+msgstr "关闭"
#: src/components/modals/QrCodeModal.tsx:72
msgid "Unknown response"
-msgstr ""
+msgstr "未知响应"
#: src/components/modals/QrCodeModal.tsx:102
#: src/pages/Index/Scan.tsx:618
msgid "Error while getting camera"
-msgstr ""
+msgstr "获取相机时出错"
#: src/components/modals/QrCodeModal.tsx:125
#: src/pages/Index/Scan.tsx:641
msgid "Error while scanning"
-msgstr ""
+msgstr "扫描时出错"
#: src/components/modals/QrCodeModal.tsx:139
#: src/pages/Index/Scan.tsx:655
msgid "Error while stopping"
-msgstr ""
+msgstr "停止时出错"
#: src/components/modals/QrCodeModal.tsx:154
#: src/defaults/menuItems.tsx:21
#: src/pages/Index/Scan.tsx:724
msgid "Scanning"
-msgstr ""
+msgstr "正在扫描"
#: src/components/modals/QrCodeModal.tsx:154
#: src/pages/Index/Scan.tsx:724
msgid "Not scanning"
-msgstr ""
+msgstr "未扫描"
#: src/components/modals/QrCodeModal.tsx:159
#: src/pages/Index/Scan.tsx:730
msgid "Select Camera"
-msgstr ""
+msgstr "选择相机"
#: src/components/modals/QrCodeModal.tsx:169
#: src/pages/Index/Scan.tsx:716
msgid "Start scanning"
-msgstr ""
+msgstr "开始扫描"
#: src/components/modals/QrCodeModal.tsx:176
#: src/pages/Index/Scan.tsx:710
msgid "Stop scanning"
-msgstr ""
+msgstr "停止扫描"
#: src/components/modals/QrCodeModal.tsx:181
msgid "No scans yet!"
-msgstr ""
+msgstr "还没有扫描!"
#: src/components/modals/QrCodeModal.tsx:201
msgid "Close modal"
-msgstr ""
+msgstr "关闭模态框"
#: src/components/modals/ServerInfoModal.tsx:26
#: src/pages/Index/Settings/SystemSettings.tsx:36
msgid "Server"
-msgstr ""
+msgstr "服务器"
#: src/components/modals/ServerInfoModal.tsx:32
msgid "Instance Name"
-msgstr ""
+msgstr "实例名称"
#: src/components/modals/ServerInfoModal.tsx:38
msgid "Database"
-msgstr ""
+msgstr "数据库"
#: src/components/modals/ServerInfoModal.tsx:38
#~ msgid "Bebug Mode"
@@ -621,74 +629,74 @@ msgstr ""
#: src/components/modals/ServerInfoModal.tsx:47
msgid "Debug Mode"
-msgstr ""
+msgstr "调试模式"
#: src/components/modals/ServerInfoModal.tsx:50
msgid "Server is running in debug mode"
-msgstr ""
+msgstr "服务器以调试模式运行"
#: src/components/modals/ServerInfoModal.tsx:57
msgid "Docker Mode"
-msgstr ""
+msgstr "停靠模式"
#: src/components/modals/ServerInfoModal.tsx:60
msgid "Server is deployed using docker"
-msgstr ""
+msgstr "服务器是使用docker部署的"
#: src/components/modals/ServerInfoModal.tsx:66
msgid "Plugin Support"
-msgstr ""
+msgstr "插件支持"
#: src/components/modals/ServerInfoModal.tsx:71
msgid "Plugin support enabled"
-msgstr ""
+msgstr "插件支持已启用"
#: src/components/modals/ServerInfoModal.tsx:73
msgid "Plugin support disabled"
-msgstr ""
+msgstr "插件支持已禁用"
#: src/components/modals/ServerInfoModal.tsx:80
msgid "Server status"
-msgstr ""
+msgstr "服务器状态"
#: src/components/modals/ServerInfoModal.tsx:86
msgid "Healthy"
-msgstr ""
+msgstr "健康"
#: src/components/modals/ServerInfoModal.tsx:88
msgid "Issues detected"
-msgstr ""
+msgstr "检测到问题"
#: src/components/modals/ServerInfoModal.tsx:97
msgid "Background Worker"
-msgstr ""
+msgstr "后台工作者"
#: src/components/modals/ServerInfoModal.tsx:101
msgid "Background worker not running"
-msgstr ""
+msgstr "后台worker未运行"
#: src/components/modals/ServerInfoModal.tsx:109
msgid "Email Settings"
-msgstr ""
+msgstr "电子邮件设置"
#: src/components/modals/ServerInfoModal.tsx:113
msgid "Email settings not configured"
-msgstr ""
+msgstr "电子邮件设置未配置"
#: src/components/modals/ServerInfoModal.tsx:121
#: src/tables/plugin/PluginListTable.tsx:185
#: src/tables/plugin/PluginListTable.tsx:310
msgid "Version"
-msgstr ""
+msgstr "版本"
#: src/components/modals/ServerInfoModal.tsx:127
msgid "Server Version"
-msgstr ""
+msgstr "服务器版本"
#: src/components/nav/MainMenu.tsx:39
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:26
msgid "Settings"
-msgstr ""
+msgstr "设置"
#: src/components/nav/MainMenu.tsx:40
#: src/pages/Index/Profile/Profile.tsx:15
@@ -698,19 +706,19 @@ msgstr ""
#: src/components/nav/MainMenu.tsx:42
#: src/defaults/menuItems.tsx:15
msgid "Account settings"
-msgstr ""
+msgstr "账户设定"
#: src/components/nav/MainMenu.tsx:50
#: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:280
+#: src/pages/Index/Settings/SystemSettings.tsx:287
msgid "System Settings"
-msgstr ""
+msgstr "系统设置"
#: src/components/nav/MainMenu.tsx:60
#: src/defaults/menuItems.tsx:63
#: src/pages/Index/Settings/AdminCenter/Index.tsx:150
msgid "Admin Center"
-msgstr ""
+msgstr "管理中心"
#: src/components/nav/MainMenu.tsx:68
#~ msgid "Current language {locale}"
@@ -718,7 +726,7 @@ msgstr ""
#: src/components/nav/MainMenu.tsx:70
msgid "Logout"
-msgstr ""
+msgstr "登出"
#: src/components/nav/MainMenu.tsx:71
#~ msgid "Switch to pseudo language"
@@ -726,121 +734,121 @@ msgstr ""
#: src/components/nav/NavHoverMenu.tsx:61
msgid "Open Navigation"
-msgstr ""
+msgstr "打开导航"
#: src/components/nav/NavHoverMenu.tsx:79
msgid "View all"
-msgstr ""
+msgstr "查看全部"
#: src/components/nav/NavHoverMenu.tsx:93
#: src/components/nav/NavHoverMenu.tsx:103
msgid "Get started"
-msgstr ""
+msgstr "开始"
#: src/components/nav/NavHoverMenu.tsx:96
msgid "Overview over high-level objects, functions and possible usecases."
-msgstr ""
+msgstr "关于高层级别物体、功能和可能用途的概述。"
#: src/components/nav/NavigationDrawer.tsx:59
msgid "Navigation"
-msgstr ""
+msgstr "导航栏"
#: src/components/nav/NavigationDrawer.tsx:62
msgid "Pages"
-msgstr ""
+msgstr "页面"
#: src/components/nav/NavigationDrawer.tsx:67
#: src/pages/Index/Settings/AdminCenter/Index.tsx:111
#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:41
msgid "Plugins"
-msgstr ""
+msgstr "插件"
#: src/components/nav/NavigationDrawer.tsx:77
msgid "Documentation"
-msgstr ""
+msgstr "文档"
#: src/components/nav/NavigationDrawer.tsx:80
msgid "About"
-msgstr ""
+msgstr "关于"
#: src/components/nav/NotificationDrawer.tsx:70
#: src/pages/Index/Settings/SystemSettings.tsx:101
#: src/pages/Index/Settings/UserSettings.tsx:94
-#: src/pages/Notifications.tsx:28
-#: src/pages/Notifications.tsx:100
+#: src/pages/Notifications.tsx:65
+#: src/pages/Notifications.tsx:152
msgid "Notifications"
-msgstr ""
+msgstr "通知"
#: src/components/nav/NotificationDrawer.tsx:87
msgid "You have no unread notifications."
-msgstr ""
+msgstr "您没有未读通知"
#: src/components/nav/NotificationDrawer.tsx:102
#: src/components/nav/NotificationDrawer.tsx:108
-#: src/tables/notifications/NotificationsTable.tsx:34
+#: src/tables/notifications/NotificationsTable.tsx:36
msgid "Notification"
-msgstr ""
+msgstr "通知"
#: src/components/nav/NotificationDrawer.tsx:131
-#: src/pages/Notifications.tsx:36
+#: src/pages/Notifications.tsx:73
msgid "Mark as read"
-msgstr ""
+msgstr "标记为已读"
-#: src/components/nav/PartCategoryTree.tsx:80
-#: src/components/render/ModelType.tsx:53
+#: src/components/nav/PartCategoryTree.tsx:137
+#: src/components/render/ModelType.tsx:60
#: src/pages/Index/Settings/SystemSettings.tsx:163
#: src/pages/part/CategoryDetail.tsx:65
msgid "Part Categories"
-msgstr ""
+msgstr "零件类别"
#: src/components/nav/SearchDrawer.tsx:76
msgid "results"
-msgstr ""
+msgstr "结果"
#: src/components/nav/SearchDrawer.tsx:336
msgid "Enter search text"
-msgstr ""
+msgstr "输入搜索文本"
#: src/components/nav/SearchDrawer.tsx:363
msgid "Search Options"
-msgstr ""
+msgstr "搜索选项"
#: src/components/nav/SearchDrawer.tsx:366
msgid "Regex search"
-msgstr ""
+msgstr "正则表达式搜索"
#: src/components/nav/SearchDrawer.tsx:376
msgid "Whole word search"
-msgstr ""
+msgstr "全词搜索"
#: src/components/nav/SearchDrawer.tsx:414
msgid "An error occurred during search query"
-msgstr ""
+msgstr "搜索查询时发生错误"
#: src/components/nav/SearchDrawer.tsx:425
msgid "No results"
-msgstr ""
+msgstr "无结果"
#: src/components/nav/SearchDrawer.tsx:428
msgid "No results available for search query"
-msgstr ""
+msgstr "没有可供搜索查询的结果"
#: src/components/nav/StockLocationTree.tsx:80
-#: src/components/render/ModelType.tsx:69
+#: src/components/render/ModelType.tsx:76
#: src/pages/stock/LocationDetail.tsx:54
msgid "Stock Locations"
-msgstr ""
+msgstr "库存地点"
-#: src/components/render/Instance.tsx:135
+#: src/components/render/Instance.tsx:137
msgid "Unknown model: {model}"
-msgstr ""
+msgstr "未知模型: {model}"
#: src/components/render/ModelType.tsx:21
#: src/pages/part/PartDetail.tsx:703
#: src/tables/part/RelatedPartTable.tsx:45
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:59
msgid "Part"
-msgstr ""
+msgstr "零件"
#: src/components/render/ModelType.tsx:22
#: src/defaults/links.tsx:28
@@ -850,187 +858,195 @@ msgstr ""
#: src/pages/part/CategoryDetail.tsx:81
#: src/pages/part/PartDetail.tsx:614
msgid "Parts"
-msgstr ""
+msgstr "零件"
#: src/components/render/ModelType.tsx:29
msgid "Part Parameter Template"
-msgstr ""
+msgstr "零件参数模板"
#: src/components/render/ModelType.tsx:30
msgid "Part Parameter Templates"
-msgstr ""
+msgstr "零件参数模板"
#: src/components/render/ModelType.tsx:36
-#: src/pages/company/SupplierPartDetail.tsx:78
-#: src/tables/purchasing/SupplierPartTable.tsx:66
-msgid "Supplier Part"
+msgid "Part Test Template"
msgstr ""
#: src/components/render/ModelType.tsx:37
-msgid "Supplier Parts"
+msgid "Part Test Templates"
msgstr ""
+#: src/components/render/ModelType.tsx:43
+#: src/pages/company/SupplierPartDetail.tsx:78
+#: src/tables/purchasing/SupplierPartTable.tsx:66
+msgid "Supplier Part"
+msgstr "供应商零件"
+
#: src/components/render/ModelType.tsx:44
+msgid "Supplier Parts"
+msgstr "供应商零件"
+
+#: src/components/render/ModelType.tsx:51
msgid "Manufacturer Part"
-msgstr ""
+msgstr "制造商零件"
-#: src/components/render/ModelType.tsx:45
+#: src/components/render/ModelType.tsx:52
msgid "Manufacturer Parts"
-msgstr ""
+msgstr "制造商零件"
-#: src/components/render/ModelType.tsx:52
+#: src/components/render/ModelType.tsx:59
#: src/pages/part/CategoryDetail.tsx:101
msgid "Part Category"
-msgstr ""
+msgstr "零件类别"
-#: src/components/render/ModelType.tsx:60
-#: src/pages/stock/StockDetail.tsx:225
+#: src/components/render/ModelType.tsx:67
+#: src/pages/stock/StockDetail.tsx:234
msgid "Stock Item"
-msgstr ""
+msgstr "库存项"
-#: src/components/render/ModelType.tsx:61
+#: src/components/render/ModelType.tsx:68
#: src/pages/company/CompanyDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:42
#: src/pages/stock/LocationDetail.tsx:82
msgid "Stock Items"
-msgstr ""
+msgstr "库存项"
-#: src/components/render/ModelType.tsx:68
+#: src/components/render/ModelType.tsx:75
msgid "Stock Location"
-msgstr ""
+msgstr "库存地点"
-#: src/components/render/ModelType.tsx:76
+#: src/components/render/ModelType.tsx:83
msgid "Stock History"
-msgstr ""
+msgstr "库存历史记录"
-#: src/components/render/ModelType.tsx:77
+#: src/components/render/ModelType.tsx:84
msgid "Stock Histories"
-msgstr ""
+msgstr "库存历史记录"
-#: src/components/render/ModelType.tsx:81
+#: src/components/render/ModelType.tsx:88
#: src/defaults/links.tsx:30
#: src/defaults/menuItems.tsx:43
msgid "Build"
-msgstr ""
+msgstr "生产..."
-#: src/components/render/ModelType.tsx:82
+#: src/components/render/ModelType.tsx:89
msgid "Builds"
-msgstr ""
+msgstr "编译"
-#: src/components/render/ModelType.tsx:89
+#: src/components/render/ModelType.tsx:96
#: src/pages/company/CompanyDetail.tsx:212
msgid "Company"
-msgstr ""
+msgstr "公司"
-#: src/components/render/ModelType.tsx:90
+#: src/components/render/ModelType.tsx:97
msgid "Companies"
-msgstr ""
+msgstr "公司"
-#: src/components/render/ModelType.tsx:97
+#: src/components/render/ModelType.tsx:104
#: src/tables/TableHoverCard.tsx:58
msgid "Project Code"
-msgstr ""
+msgstr "项目编码"
-#: src/components/render/ModelType.tsx:98
+#: src/components/render/ModelType.tsx:105
#: src/pages/Index/Settings/AdminCenter/Index.tsx:87
msgid "Project Codes"
-msgstr ""
+msgstr "项目编码"
-#: src/components/render/ModelType.tsx:104
+#: src/components/render/ModelType.tsx:111
#: src/pages/purchasing/PurchaseOrderDetail.tsx:131
msgid "Purchase Order"
-msgstr ""
+msgstr "采购订单"
-#: src/components/render/ModelType.tsx:105
-#: src/pages/Index/Settings/SystemSettings.tsx:232
+#: src/components/render/ModelType.tsx:112
+#: src/pages/Index/Settings/SystemSettings.tsx:239
#: src/pages/company/CompanyDetail.tsx:99
#: src/pages/company/SupplierPartDetail.tsx:45
#: src/pages/part/PartDetail.tsx:547
#: src/pages/purchasing/PurchasingIndex.tsx:20
msgid "Purchase Orders"
-msgstr ""
+msgstr "采购订单"
-#: src/components/render/ModelType.tsx:112
+#: src/components/render/ModelType.tsx:119
msgid "Purchase Order Line"
-msgstr ""
+msgstr "采购订单行"
-#: src/components/render/ModelType.tsx:113
+#: src/components/render/ModelType.tsx:120
msgid "Purchase Order Lines"
-msgstr ""
+msgstr "采购订单行"
-#: src/components/render/ModelType.tsx:117
+#: src/components/render/ModelType.tsx:124
#: src/pages/sales/SalesOrderDetail.tsx:102
msgid "Sales Order"
-msgstr ""
+msgstr "销售订单"
-#: src/components/render/ModelType.tsx:118
-#: src/pages/Index/Settings/SystemSettings.tsx:246
+#: src/components/render/ModelType.tsx:125
+#: src/pages/Index/Settings/SystemSettings.tsx:253
#: src/pages/company/CompanyDetail.tsx:115
#: src/pages/part/PartDetail.tsx:553
#: src/pages/sales/SalesIndex.tsx:21
msgid "Sales Orders"
-msgstr ""
+msgstr "销售订单"
-#: src/components/render/ModelType.tsx:125
+#: src/components/render/ModelType.tsx:132
msgid "Sales Order Shipment"
-msgstr ""
+msgstr "销售订单配送"
-#: src/components/render/ModelType.tsx:126
+#: src/components/render/ModelType.tsx:133
msgid "Sales Order Shipments"
-msgstr ""
+msgstr "销售订单配送"
-#: src/components/render/ModelType.tsx:132
+#: src/components/render/ModelType.tsx:139
#: src/pages/sales/ReturnOrderDetail.tsx:68
msgid "Return Order"
-msgstr ""
+msgstr "退货订单"
-#: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:260
+#: src/components/render/ModelType.tsx:140
+#: src/pages/Index/Settings/SystemSettings.tsx:267
#: src/pages/company/CompanyDetail.tsx:122
#: src/pages/sales/SalesIndex.tsx:27
msgid "Return Orders"
-msgstr ""
+msgstr "退货订单"
-#: src/components/render/ModelType.tsx:140
+#: src/components/render/ModelType.tsx:147
#: src/tables/company/AddressTable.tsx:47
msgid "Address"
-msgstr ""
+msgstr "地址"
-#: src/components/render/ModelType.tsx:141
+#: src/components/render/ModelType.tsx:148
#: src/pages/company/CompanyDetail.tsx:148
msgid "Addresses"
-msgstr ""
+msgstr "地址"
-#: src/components/render/ModelType.tsx:147
+#: src/components/render/ModelType.tsx:154
msgid "Contact"
-msgstr ""
+msgstr "联系人"
-#: src/components/render/ModelType.tsx:148
+#: src/components/render/ModelType.tsx:155
#: src/pages/company/CompanyDetail.tsx:142
msgid "Contacts"
-msgstr ""
+msgstr "联系人"
-#: src/components/render/ModelType.tsx:154
+#: src/components/render/ModelType.tsx:161
msgid "Owner"
-msgstr ""
+msgstr "所有者"
-#: src/components/render/ModelType.tsx:155
+#: src/components/render/ModelType.tsx:162
msgid "Owners"
-msgstr ""
+msgstr "所有者"
-#: src/components/render/ModelType.tsx:161
+#: src/components/render/ModelType.tsx:168
msgid "User"
-msgstr ""
+msgstr "用户"
-#: src/components/render/ModelType.tsx:162
+#: src/components/render/ModelType.tsx:169
#: src/pages/Index/Settings/AdminCenter/Index.tsx:63
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
msgid "Users"
-msgstr ""
+msgstr "用户"
#: src/components/render/Order.tsx:85
msgid "Shipment"
-msgstr ""
+msgstr "配送"
#: src/components/render/Part.tsx:10
#: src/defaults/links.tsx:29
@@ -1038,39 +1054,39 @@ msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:199
#: src/pages/part/PartDetail.tsx:470
#: src/pages/stock/LocationDetail.tsx:63
-#: src/pages/stock/StockDetail.tsx:140
-#: src/tables/stock/StockItemTable.tsx:38
+#: src/pages/stock/StockDetail.tsx:149
+#: src/tables/stock/StockItemTable.tsx:39
msgid "Stock"
-msgstr ""
+msgstr "库存"
#: src/components/render/Stock.tsx:26
msgid "Serial Number"
-msgstr ""
+msgstr "序列号"
#: src/components/render/Stock.tsx:28
#: src/pages/build/BuildDetail.tsx:76
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:81
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:109
msgid "Quantity"
-msgstr ""
+msgstr "数量"
#: src/components/settings/SettingItem.tsx:45
#: src/components/settings/SettingItem.tsx:98
msgid "Setting updated"
-msgstr ""
+msgstr "设置已更新"
#: src/components/settings/SettingItem.tsx:46
#: src/components/settings/SettingItem.tsx:99
msgid "{0} updated successfully"
-msgstr ""
+msgstr "成功更新 {0}"
#: src/components/settings/SettingItem.tsx:54
msgid "Error editing setting"
-msgstr ""
+msgstr "编辑设置时出错"
#: src/components/settings/SettingItem.tsx:91
msgid "Edit Setting"
-msgstr ""
+msgstr "编辑设置"
#: src/components/settings/SettingList.tsx:63
msgid "No settings specified"
@@ -1231,10 +1247,6 @@ msgstr ""
#~ msgid "Contact created"
#~ msgstr "Contact created"
-#: src/components/tables/general/AttachmentTable.tsx:30
-#~ msgid "Attachment"
-#~ msgstr "Attachment"
-
#: src/components/tables/general/AttachmentTable.tsx:47
#~ msgid "Comment"
#~ msgstr "Comment"
@@ -1307,11 +1319,6 @@ msgstr ""
#~ msgid "Test Name"
#~ msgstr "Test Name"
-#: src/components/tables/part/PartTestTemplateTable.tsx:39
-#: src/components/tables/part/PartTestTemplateTable.tsx:56
-#~ msgid "Required"
-#~ msgstr "Required"
-
#: src/components/tables/part/PartTestTemplateTable.tsx:43
#: src/components/tables/part/PartTestTemplateTable.tsx:61
#~ msgid "Requires Value"
@@ -1542,161 +1549,161 @@ msgstr ""
#: src/components/widgets/DisplayWidget.tsx:11
#: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:16
msgid "Display Settings"
-msgstr ""
+msgstr "显示设置"
#: src/components/widgets/DisplayWidget.tsx:15
#: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:22
msgid "Color Mode"
-msgstr ""
+msgstr "色彩模式"
#: src/components/widgets/DisplayWidget.tsx:21
#: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:32
msgid "Language"
-msgstr ""
+msgstr "语言"
#: src/components/widgets/FeedbackWidget.tsx:18
msgid "Something is new: Platform UI"
-msgstr ""
+msgstr "新事件:平台界面"
#: src/components/widgets/FeedbackWidget.tsx:20
msgid "We are building a new UI with a modern stack. What you currently see is not fixed and will be redesigned but demonstrates the UI/UX possibilities we will have going forward."
-msgstr ""
+msgstr "我们正在建造一个带有现代堆栈的新界面。 您目前看到的不是固定的,将被重新设计,而是演示UI/UX的可能性,我们将继续前进。"
#: src/components/widgets/FeedbackWidget.tsx:31
msgid "Provide Feedback"
-msgstr ""
+msgstr "提供反馈"
#: src/components/widgets/GetStartedWidget.tsx:11
msgid "Getting started"
-msgstr ""
+msgstr "快速开始"
#: src/components/widgets/MarkdownEditor.tsx:109
msgid "Failed to upload image"
-msgstr ""
+msgstr "上传图片失败"
#: src/components/widgets/MarkdownEditor.tsx:147
msgid "Notes saved"
-msgstr ""
+msgstr "备注已保存"
#: src/components/widgets/MarkdownEditor.tsx:155
msgid "Failed to save notes"
-msgstr ""
+msgstr "保存记事失败"
#: src/components/widgets/WidgetLayout.tsx:180
msgid "Layout"
-msgstr ""
+msgstr "布局"
#: src/components/widgets/WidgetLayout.tsx:186
msgid "Reset Layout"
-msgstr ""
+msgstr "重置布局"
#: src/components/widgets/WidgetLayout.tsx:199
msgid "Stop Edit"
-msgstr ""
+msgstr "停止编辑"
#: src/components/widgets/WidgetLayout.tsx:199
msgid "Edit Layout"
-msgstr ""
+msgstr "编辑布局"
#: src/components/widgets/WidgetLayout.tsx:205
msgid "Appearance"
-msgstr ""
+msgstr "外观"
#: src/components/widgets/WidgetLayout.tsx:217
msgid "Show Boxes"
-msgstr ""
+msgstr "显示框"
#: src/contexts/LanguageContext.tsx:18
msgid "Bulgarian"
-msgstr ""
+msgstr "保加利亚语"
#: src/contexts/LanguageContext.tsx:19
msgid "Czech"
-msgstr ""
+msgstr "捷克语"
#: src/contexts/LanguageContext.tsx:20
msgid "Danish"
-msgstr ""
+msgstr "丹麦语"
#: src/contexts/LanguageContext.tsx:21
msgid "German"
-msgstr ""
+msgstr "德语"
#: src/contexts/LanguageContext.tsx:22
msgid "Greek"
-msgstr ""
+msgstr "希腊语"
#: src/contexts/LanguageContext.tsx:23
msgid "English"
-msgstr ""
+msgstr "英语"
#: src/contexts/LanguageContext.tsx:24
msgid "Spanish"
-msgstr ""
+msgstr "西班牙语"
#: src/contexts/LanguageContext.tsx:25
msgid "Spanish (Mexican)"
-msgstr ""
+msgstr "西班牙语(墨西哥)"
#: src/contexts/LanguageContext.tsx:26
msgid "Farsi / Persian"
-msgstr ""
+msgstr "波斯语"
#: src/contexts/LanguageContext.tsx:27
msgid "Finnish"
-msgstr ""
+msgstr "芬兰语"
#: src/contexts/LanguageContext.tsx:28
msgid "French"
-msgstr ""
+msgstr "法语"
#: src/contexts/LanguageContext.tsx:29
msgid "Hebrew"
-msgstr ""
+msgstr "希伯来语"
#: src/contexts/LanguageContext.tsx:30
msgid "Hindi"
-msgstr ""
+msgstr "印地语"
#: src/contexts/LanguageContext.tsx:31
msgid "Hungarian"
-msgstr ""
+msgstr "匈牙利语"
#: src/contexts/LanguageContext.tsx:32
msgid "Italian"
-msgstr ""
+msgstr "意大利语"
#: src/contexts/LanguageContext.tsx:33
msgid "Japanese"
-msgstr ""
+msgstr "日语"
#: src/contexts/LanguageContext.tsx:34
msgid "Korean"
-msgstr ""
+msgstr "韩语"
#: src/contexts/LanguageContext.tsx:35
msgid "Dutch"
-msgstr ""
+msgstr "荷兰语"
#: src/contexts/LanguageContext.tsx:36
msgid "Norwegian"
-msgstr ""
+msgstr "挪威语"
#: src/contexts/LanguageContext.tsx:37
msgid "Polish"
-msgstr ""
+msgstr "波兰语"
#: src/contexts/LanguageContext.tsx:38
msgid "Portuguese"
-msgstr ""
+msgstr "葡萄牙语"
#: src/contexts/LanguageContext.tsx:39
msgid "Portuguese (Brazilian)"
-msgstr ""
+msgstr "葡萄牙语(巴西)"
#: src/contexts/LanguageContext.tsx:40
msgid "Russian"
-msgstr ""
+msgstr "俄语"
#: src/contexts/LanguageContext.tsx:41
msgid "Slovak"
@@ -1704,100 +1711,100 @@ msgstr ""
#: src/contexts/LanguageContext.tsx:42
msgid "Slovenian"
-msgstr ""
+msgstr "斯洛语尼亚语"
#: src/contexts/LanguageContext.tsx:43
msgid "Swedish"
-msgstr ""
+msgstr "瑞典语"
#: src/contexts/LanguageContext.tsx:44
msgid "Thai"
-msgstr ""
+msgstr "泰语"
#: src/contexts/LanguageContext.tsx:45
msgid "Turkish"
-msgstr ""
+msgstr "土耳其语"
#: src/contexts/LanguageContext.tsx:46
msgid "Vietnamese"
-msgstr ""
+msgstr "越南语"
#: src/contexts/LanguageContext.tsx:47
msgid "Chinese (Simplified)"
-msgstr ""
+msgstr "中文 (简体)"
#: src/contexts/LanguageContext.tsx:48
msgid "Chinese (Traditional)"
-msgstr ""
+msgstr "中文 (繁体)"
#: src/defaults/dashboardItems.tsx:15
msgid "Subscribed Parts"
-msgstr ""
+msgstr "已订购零件"
#: src/defaults/dashboardItems.tsx:22
msgid "Subscribed Categories"
-msgstr ""
+msgstr "已订阅类别"
#: src/defaults/dashboardItems.tsx:29
msgid "Latest Parts"
-msgstr ""
+msgstr "最近零件"
#: src/defaults/dashboardItems.tsx:36
msgid "BOM Waiting Validation"
-msgstr ""
+msgstr "等待验证的 物料清单"
#: src/defaults/dashboardItems.tsx:43
msgid "Recently Updated"
-msgstr ""
+msgstr "最近更新"
#: src/defaults/dashboardItems.tsx:50
#: src/tables/part/PartTable.tsx:218
msgid "Low Stock"
-msgstr ""
+msgstr "低库存"
#: src/defaults/dashboardItems.tsx:57
msgid "Depleted Stock"
-msgstr ""
+msgstr "已耗尽库存"
#: src/defaults/dashboardItems.tsx:64
msgid "Required for Build Orders"
-msgstr ""
+msgstr "生产订单所需的"
#: src/defaults/dashboardItems.tsx:71
msgid "Expired Stock"
-msgstr ""
+msgstr "过期库存"
#: src/defaults/dashboardItems.tsx:78
msgid "Stale Stock"
-msgstr ""
+msgstr "过期库存"
#: src/defaults/dashboardItems.tsx:85
msgid "Build Orders In Progress"
-msgstr ""
+msgstr "进行中的生产订单"
#: src/defaults/dashboardItems.tsx:92
msgid "Overdue Build Orders"
-msgstr ""
+msgstr "逾期的生产订单"
#: src/defaults/dashboardItems.tsx:99
msgid "Outstanding Purchase Orders"
-msgstr ""
+msgstr "未结清的采购订单"
#: src/defaults/dashboardItems.tsx:106
msgid "Overdue Purchase Orders"
-msgstr ""
+msgstr "逾期的采购订单"
#: src/defaults/dashboardItems.tsx:113
msgid "Outstanding Sales Orders"
-msgstr ""
+msgstr "未结清的销售订单"
#: src/defaults/dashboardItems.tsx:120
msgid "Overdue Sales Orders"
-msgstr ""
+msgstr "逾期的销售订单"
#: src/defaults/dashboardItems.tsx:127
msgid "Current News"
-msgstr ""
+msgstr "当前新闻"
#: src/defaults/defaultHostList.tsx:8
#~ msgid "InvenTree Demo"
@@ -1809,27 +1816,27 @@ msgstr ""
#: src/defaults/links.tsx:11
msgid "Website"
-msgstr ""
+msgstr "网站"
#: src/defaults/links.tsx:16
msgid "GitHub"
-msgstr ""
+msgstr "GitHub"
#: src/defaults/links.tsx:21
msgid "Demo"
-msgstr ""
+msgstr "演示"
#: src/defaults/links.tsx:26
#: src/defaults/menuItems.tsx:9
msgid "Home"
-msgstr ""
+msgstr "主页"
#: src/defaults/links.tsx:27
#: src/defaults/menuItems.tsx:28
#: src/pages/Index/Dashboard.tsx:19
#: src/pages/Index/Settings/UserSettings.tsx:41
msgid "Dashboard"
-msgstr ""
+msgstr "仪表盘"
#: src/defaults/links.tsx:31
#: src/defaults/menuItems.tsx:48
@@ -1840,7 +1847,7 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:134
#: src/pages/purchasing/PurchasingIndex.tsx:52
msgid "Purchasing"
-msgstr ""
+msgstr "采购中"
#: src/defaults/links.tsx:32
#: src/defaults/menuItems.tsx:53
@@ -1849,45 +1856,45 @@ msgstr ""
#: src/pages/sales/SalesIndex.tsx:45
#: src/pages/sales/SalesOrderDetail.tsx:105
msgid "Sales"
-msgstr ""
+msgstr "销售"
#: src/defaults/links.tsx:35
#: src/defaults/menuItems.tsx:71
#: src/pages/Index/Playground.tsx:192
msgid "Playground"
-msgstr ""
+msgstr "Playground"
#: src/defaults/links.tsx:49
msgid "Getting Started"
-msgstr ""
+msgstr "快速上手"
#: src/defaults/links.tsx:50
msgid "Getting started with InvenTree"
-msgstr ""
+msgstr "开始使用 InventTree"
#: src/defaults/links.tsx:56
msgid "API"
-msgstr ""
+msgstr "API"
#: src/defaults/links.tsx:57
msgid "InvenTree API documentation"
-msgstr ""
+msgstr "InventTree API 文档"
#: src/defaults/links.tsx:62
msgid "Developer Manual"
-msgstr ""
+msgstr "开发者手册"
#: src/defaults/links.tsx:63
msgid "InvenTree developer manual"
-msgstr ""
+msgstr "InventTree 开发者手册"
#: src/defaults/links.tsx:68
msgid "FAQ"
-msgstr ""
+msgstr "FAQ"
#: src/defaults/links.tsx:69
msgid "Frequently asked questions"
-msgstr ""
+msgstr "常见问题"
#: src/defaults/links.tsx:76
#~ msgid "Instance"
@@ -1896,7 +1903,7 @@ msgstr ""
#: src/defaults/links.tsx:79
#: src/defaults/links.tsx:104
msgid "System Information"
-msgstr ""
+msgstr "系统信息"
#: src/defaults/links.tsx:83
#~ msgid "InvenTree"
@@ -1905,23 +1912,23 @@ msgstr ""
#: src/defaults/links.tsx:92
#: src/defaults/links.tsx:110
msgid "About InvenTree"
-msgstr ""
+msgstr "关于 InventTree"
#: src/defaults/links.tsx:105
msgid "About this Inventree instance"
-msgstr ""
+msgstr "关于此 Inventree 实例"
#: src/defaults/links.tsx:111
msgid "About the InvenTree org"
-msgstr ""
+msgstr "关于 InventTree 组织"
#: src/defaults/links.tsx:116
msgid "Licenses"
-msgstr ""
+msgstr "许可协议"
#: src/defaults/links.tsx:117
msgid "Licenses for packages used by InvenTree"
-msgstr ""
+msgstr "InvenTree 使用的软件包许可证"
#: src/defaults/menuItems.tsx:7
#~ msgid "Open sourcea"
@@ -1949,7 +1956,7 @@ msgstr ""
#: src/defaults/menuItems.tsx:17
msgid "User attributes and design settings."
-msgstr ""
+msgstr "用户属性和设计设置"
#: src/defaults/menuItems.tsx:21
#~ msgid "Free for everyone"
@@ -1961,7 +1968,7 @@ msgstr ""
#: src/defaults/menuItems.tsx:23
msgid "View for interactive scanning and multiple actions."
-msgstr ""
+msgstr "查看互动扫描和多种操作。"
#: src/defaults/menuItems.tsx:24
#~ msgid "The fluid of Smeargle’s tail secretions changes in the intensity"
@@ -2001,47 +2008,47 @@ msgstr ""
#: src/forms/AttachmentForms.tsx:57
msgid "Add File"
-msgstr ""
+msgstr "添加文件"
#: src/forms/AttachmentForms.tsx:57
msgid "Add Link"
-msgstr ""
+msgstr "添加链接"
#: src/forms/AttachmentForms.tsx:58
msgid "File added"
-msgstr ""
+msgstr "文件已添加"
#: src/forms/AttachmentForms.tsx:58
msgid "Link added"
-msgstr ""
+msgstr "链接已添加"
#: src/forms/AttachmentForms.tsx:99
msgid "Edit File"
-msgstr ""
+msgstr "编辑文件"
#: src/forms/AttachmentForms.tsx:99
msgid "Edit Link"
-msgstr ""
+msgstr "修改链接"
#: src/forms/AttachmentForms.tsx:100
msgid "File updated"
-msgstr ""
+msgstr "文件已上传"
#: src/forms/AttachmentForms.tsx:100
msgid "Link updated"
-msgstr ""
+msgstr "链接已更新"
#: src/forms/AttachmentForms.tsx:124
msgid "Delete Attachment"
-msgstr ""
+msgstr "删除附件"
#: src/forms/AttachmentForms.tsx:125
msgid "Attachment deleted"
-msgstr ""
+msgstr "附件已删除"
#: src/forms/AttachmentForms.tsx:128
msgid "Are you sure you want to delete this attachment?"
-msgstr ""
+msgstr "确认删除此附件?"
#: src/forms/CompanyForms.tsx:150
#~ msgid "Company updated"
@@ -2049,7 +2056,7 @@ msgstr ""
#: src/forms/PartForms.tsx:105
msgid "Parent part category"
-msgstr ""
+msgstr "上级零件类别"
#: src/forms/PartForms.tsx:106
#~ msgid "Create Part"
@@ -2065,19 +2072,19 @@ msgstr ""
#: src/forms/StockForms.tsx:44
msgid "Add given quantity as packs instead of individual items"
-msgstr ""
+msgstr "将给定的数量添加为包,而不是单个项目"
#: src/forms/StockForms.tsx:55
msgid "Enter initial quantity for this stock item"
-msgstr ""
+msgstr "输入此库存项的初始数量"
#: src/forms/StockForms.tsx:60
msgid "Serial Numbers"
-msgstr ""
+msgstr "序列号"
#: src/forms/StockForms.tsx:61
msgid "Enter serial numbers for new stock (or leave blank)"
-msgstr ""
+msgstr "输入新库存的序列号(或留空)"
#: src/forms/StockForms.tsx:110
msgid "Add Stock Item"
@@ -2089,11 +2096,11 @@ msgstr ""
#: src/forms/StockForms.tsx:131
msgid "Edit Stock Item"
-msgstr ""
+msgstr "编辑库存项"
#: src/forms/StockForms.tsx:132
msgid "Stock item updated"
-msgstr ""
+msgstr "库存项已更新"
#: src/forms/StockForms.tsx:140
msgid "Parent stock location"
@@ -2113,7 +2120,7 @@ msgstr ""
#: src/functions/auth.tsx:70
msgid "Logout successful"
-msgstr ""
+msgstr "登出成功"
#: src/functions/auth.tsx:71
msgid "You have been logged out"
@@ -2121,12 +2128,12 @@ msgstr ""
#: src/functions/auth.tsx:108
msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too."
-msgstr ""
+msgstr "查看收件箱中的重置链接。这只有在您有账户的情况下才会起作用。也请检查垃圾邮件。"
#: src/functions/auth.tsx:115
#: src/pages/Auth/Set-Password.tsx:39
msgid "Reset failed"
-msgstr ""
+msgstr "重置失败"
#: src/functions/auth.tsx:141
#~ msgid "Already logged in"
@@ -2154,35 +2161,35 @@ msgstr ""
#: src/functions/forms.tsx:182
msgid "Invalid Form"
-msgstr ""
+msgstr "无效的表单"
#: src/functions/forms.tsx:183
msgid "method parameter not supplied"
-msgstr ""
+msgstr "未提供方法参数"
#: src/functions/notifications.tsx:9
msgid "Not implemented"
-msgstr ""
+msgstr "尚未实现"
#: src/functions/notifications.tsx:10
msgid "This feature is not yet implemented"
-msgstr ""
+msgstr "此功能尚未实现"
#: src/functions/notifications.tsx:20
msgid "Permission denied"
-msgstr ""
+msgstr "权限不足"
#: src/functions/notifications.tsx:21
msgid "You do not have permission to perform this action"
-msgstr ""
+msgstr "您无权执行此操作。"
#: src/functions/notifications.tsx:32
msgid "Invalid Return Code"
-msgstr ""
+msgstr "无效返回码"
#: src/functions/notifications.tsx:33
msgid "Server returned status {returnCode}"
-msgstr ""
+msgstr "服务器返回状态 {returnCode}"
#: src/hooks/UseForm.tsx:86
msgid "Item Created"
@@ -2202,16 +2209,16 @@ msgstr ""
#: src/pages/Auth/Logged-In.tsx:22
msgid "Checking if you are already logged in"
-msgstr ""
+msgstr "检查您是否已经登录"
#: src/pages/Auth/Login.tsx:31
#: src/pages/Index/Scan.tsx:318
msgid "No selection"
-msgstr ""
+msgstr "未选择"
#: src/pages/Auth/Login.tsx:75
msgid "Welcome, log in below"
-msgstr ""
+msgstr "欢迎,请在下方登录"
#: src/pages/Auth/Login.tsx:77
msgid "Register below"
@@ -2224,59 +2231,59 @@ msgstr ""
#: src/pages/Auth/Reset.tsx:41
#: src/pages/Auth/Set-Password.tsx:112
msgid "Send mail"
-msgstr ""
+msgstr "发送邮件"
#: src/pages/Auth/Set-Password.tsx:30
msgid "Token invalid"
-msgstr ""
+msgstr "令牌无效"
#: src/pages/Auth/Set-Password.tsx:31
msgid "You need to provide a valid token to set a new password. Check your inbox for a reset link."
-msgstr ""
+msgstr "您需要提供一个有效的令牌来设置一个新的密码。请检查收件箱以获取重置链接。"
#: src/pages/Auth/Set-Password.tsx:49
msgid "No token provided"
-msgstr ""
+msgstr "未提供令牌"
#: src/pages/Auth/Set-Password.tsx:50
msgid "You need to provide a token to set a new password. Check your inbox for a reset link."
-msgstr ""
+msgstr "您需要提供一个有效的令牌来设置一个新的密码。请检查收件箱以获取重置链接。"
#: src/pages/Auth/Set-Password.tsx:73
msgid "Password set"
-msgstr ""
+msgstr "密码已设置"
#: src/pages/Auth/Set-Password.tsx:74
msgid "The password was set successfully. You can now login with your new password"
-msgstr ""
+msgstr "密码设置成功。您现在可以使用新密码登录"
#: src/pages/Auth/Set-Password.tsx:101
msgid "Set new password"
-msgstr ""
+msgstr "设置新密码"
#: src/pages/ErrorPage.tsx:17
msgid "Error: {0}"
-msgstr ""
+msgstr "错误:{0}"
#: src/pages/ErrorPage.tsx:28
msgid "Sorry, an unexpected error has occurred."
-msgstr ""
+msgstr "抱歉,发生意外的错误。"
#: src/pages/Index/Dashboard.tsx:22
msgid "Autoupdate"
-msgstr ""
+msgstr "自动更新"
#: src/pages/Index/Dashboard.tsx:26
msgid "This page is a replacement for the old start page with the same information. This page will be deprecated and replaced by the home page."
-msgstr ""
+msgstr "本页是旧的起始页的替代页面,提供相同的信息。本页面将被废弃,并由主页取代。"
#: src/pages/Index/Home.tsx:58
msgid "Welcome to your Dashboard{0}"
-msgstr ""
+msgstr "欢迎来到您的仪表板 {0}"
#: src/pages/Index/Playground.tsx:197
msgid "This page is a showcase for the possibilities of Platform UI."
-msgstr ""
+msgstr "本页面展示了 Platform UI 的各种可能性。"
#: src/pages/Index/Profile/Profile.tsx:30
#: src/pages/Index/Profile/Profile.tsx:141
@@ -2416,133 +2423,133 @@ msgstr ""
#: src/pages/Index/Scan.tsx:214
msgid "Manual input"
-msgstr ""
+msgstr "手动输入"
#: src/pages/Index/Scan.tsx:215
msgid "Image Barcode"
-msgstr ""
+msgstr "图片条形码"
#: src/pages/Index/Scan.tsx:245
msgid "Selected elements are not known"
-msgstr ""
+msgstr "所选元素未知"
#: src/pages/Index/Scan.tsx:252
msgid "Multiple object types selected"
-msgstr ""
+msgstr "选择多个对象类型"
#: src/pages/Index/Scan.tsx:259
msgid "Actions for {0}"
-msgstr ""
+msgstr "对 {0} 的操作"
#: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:173
+#: src/pages/stock/StockDetail.tsx:182
msgid "Count"
-msgstr ""
+msgstr "总计"
#: src/pages/Index/Scan.tsx:276
msgid "Scan Page"
-msgstr ""
+msgstr "扫描页"
#: src/pages/Index/Scan.tsx:279
msgid "This page can be used for continuously scanning items and taking actions on them."
-msgstr ""
+msgstr "该页面可用于持续扫描项目并对其进行操作。"
#: src/pages/Index/Scan.tsx:294
msgid "Select the input method you want to use to scan items."
-msgstr ""
+msgstr "选择您要用于扫描项目的输入方法。"
#: src/pages/Index/Scan.tsx:296
msgid "Input"
-msgstr ""
+msgstr "输入"
#: src/pages/Index/Scan.tsx:303
msgid "Select input method"
-msgstr ""
+msgstr "选择输入方式"
#: src/pages/Index/Scan.tsx:304
msgid "Nothing found"
-msgstr ""
+msgstr "无结果"
#: src/pages/Index/Scan.tsx:312
msgid "Depending on the selected parts actions will be shown here. Not all barcode types are supported currently."
-msgstr ""
+msgstr "根据所选零件的不同,这里将显示相应的操作。目前不支持所有条形码类型。"
#: src/pages/Index/Scan.tsx:314
msgid "Action"
-msgstr ""
+msgstr "操作"
#: src/pages/Index/Scan.tsx:323
msgid "{0} items selected"
-msgstr ""
+msgstr "已选择 {0} 项"
#: src/pages/Index/Scan.tsx:326
msgid "General Actions"
-msgstr ""
+msgstr "通用操作"
#: src/pages/Index/Scan.tsx:339
msgid "Lookup part"
-msgstr ""
+msgstr "查找零件"
#: src/pages/Index/Scan.tsx:346
msgid "Open Link"
-msgstr ""
+msgstr "打开链接"
#: src/pages/Index/Scan.tsx:361
msgid "History is locally kept in this browser."
-msgstr ""
+msgstr "历史记录被本地保存在此浏览器。"
#: src/pages/Index/Scan.tsx:362
msgid "The history is kept in this browser's local storage. So it won't be shared with other users or other devices but is persistent through reloads. You can select items in the history to perform actions on them. To add items, scan/enter them in the Input area."
-msgstr ""
+msgstr "历史记录保存在浏览器的本地存储中。因此,它不会与其他用户或其他设备共享,但在重新加载时会持续存在。您可以选择历史记录中的项目,对其执行操作。要添加项目,请在输入区扫描/输入。"
#: src/pages/Index/Scan.tsx:364
-#: src/pages/Notifications.tsx:56
+#: src/pages/Notifications.tsx:100
msgid "History"
-msgstr ""
+msgstr "历史记录"
#: src/pages/Index/Scan.tsx:430
msgid "No history"
-msgstr ""
+msgstr "无历史记录"
#: src/pages/Index/Scan.tsx:449
msgid "Item"
-msgstr ""
+msgstr "项目"
#: src/pages/Index/Scan.tsx:452
msgid "Type"
-msgstr ""
+msgstr "类型"
#: src/pages/Index/Scan.tsx:455
msgid "Source"
-msgstr ""
+msgstr "来源"
#: src/pages/Index/Scan.tsx:458
msgid "Scanned at"
-msgstr ""
+msgstr "扫描于"
#: src/pages/Index/Scan.tsx:510
msgid "Enter item serial or data"
-msgstr ""
+msgstr "输入项目序列号或数据"
#: src/pages/Index/Scan.tsx:522
msgid "Add dummy item"
-msgstr ""
+msgstr "添加虚拟项目"
#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:32
msgid "Account Details"
-msgstr ""
+msgstr "账户详情"
#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:41
msgid "First name"
-msgstr ""
+msgstr "名"
#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:46
msgid "Last name"
-msgstr ""
+msgstr "姓"
#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:58
msgid "First name:"
-msgstr ""
+msgstr "名:"
#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:58
#~ msgid "First name: {0}"
@@ -2554,124 +2561,124 @@ msgstr ""
#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:62
msgid "Last name:"
-msgstr ""
+msgstr "姓:"
#: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:39
msgid "Use pseudo language"
-msgstr ""
+msgstr "使用 pseudo 语言"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:53
msgid "Single Sign On Accounts"
-msgstr ""
+msgstr "单点登录账户"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:60
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:78
msgid "Not enabled"
-msgstr ""
+msgstr "未启用"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:63
msgid "Single Sign On is not enabled for this server"
-msgstr ""
+msgstr "此服务器未启用单点登录"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:67
msgid "Multifactor"
-msgstr ""
+msgstr "多因素身份验证"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:81
msgid "Multifactor authentication is not configured for your account"
-msgstr ""
+msgstr "您的账户未配置多因素身份验证"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:132
msgid "The following email addresses are associated with your account:"
-msgstr ""
+msgstr "以下电子邮件地址与您的账户相关联:"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:144
msgid "Primary"
-msgstr ""
+msgstr "主要的"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:149
msgid "Verified"
-msgstr ""
+msgstr "已验证"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:153
msgid "Unverified"
-msgstr ""
+msgstr "未验证"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:166
msgid "Add Email Address"
-msgstr ""
+msgstr "添加电子邮件地址"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:169
msgid "E-Mail"
-msgstr ""
+msgstr "邮箱"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:170
msgid "E-Mail address"
-msgstr ""
+msgstr "邮箱地址"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:182
msgid "Make Primary"
-msgstr ""
+msgstr "设为首选"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:187
msgid "Re-send Verification"
-msgstr ""
+msgstr "重新发送验证"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:198
msgid "Add Email"
-msgstr ""
+msgstr "添加电子邮件"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:263
msgid "Provider has not been configured"
-msgstr ""
+msgstr "未配置提供商"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:273
msgid "Not configured"
-msgstr ""
+msgstr "未配置"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:276
msgid "There are no social network accounts connected to this account."
-msgstr ""
+msgstr "您当前没有连接到此账户的社交网络账户。"
#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:286
msgid "You can sign in to your account using any of the following third party accounts"
-msgstr ""
+msgstr "您可以使用下列任何第三方账户登录您的账户"
#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:68
msgid "bars"
-msgstr ""
+msgstr "栏"
#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:69
msgid "oval"
-msgstr ""
+msgstr "椭圆"
#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:70
msgid "dots"
-msgstr ""
+msgstr "点"
#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:81
msgid "Theme"
-msgstr ""
+msgstr "主题"
#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:87
msgid "Primary color"
-msgstr ""
+msgstr "主要颜色"
#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:100
msgid "White color"
-msgstr ""
+msgstr "白色"
#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:108
msgid "Black color"
-msgstr ""
+msgstr "黑色"
#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:116
msgid "Border Radius"
-msgstr ""
+msgstr "边框半径"
#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:132
msgid "Loader"
-msgstr ""
+msgstr "加载器"
#: src/pages/Index/Settings/AdminCenter.tsx:30
#~ msgid "User Management"
@@ -2683,11 +2690,11 @@ msgstr ""
#: src/pages/Index/Settings/AdminCenter/Index.tsx:69
msgid "Background Tasks"
-msgstr ""
+msgstr "后台任务"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:75
msgid "Error Reports"
-msgstr ""
+msgstr "错误报告"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:81
msgid "Currencies"
@@ -2695,11 +2702,11 @@ msgstr ""
#: src/pages/Index/Settings/AdminCenter/Index.tsx:99
msgid "Custom Units"
-msgstr ""
+msgstr "自定义单位"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:105
msgid "Part Parameters"
-msgstr ""
+msgstr "零件参数"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:117
#: src/tables/machine/MachineTypeTable.tsx:278
@@ -2708,15 +2715,15 @@ msgstr ""
#: src/pages/Index/Settings/AdminCenter/Index.tsx:127
msgid "Quick Actions"
-msgstr ""
+msgstr "快捷操作"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:132
msgid "Add a new user"
-msgstr ""
+msgstr "添加新用户"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:151
msgid "Advanced Options"
-msgstr ""
+msgstr "高级选项"
#: src/pages/Index/Settings/AdminCenter/MachineManagementPanel.tsx:43
msgid "Machine types"
@@ -2733,11 +2740,11 @@ msgstr ""
#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:28
#: src/tables/settings/UserTable.tsx:103
msgid "Info"
-msgstr ""
+msgstr "信息"
#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:32
msgid "External plugins are not enabled for this InvenTree installation."
-msgstr ""
+msgstr "此 InventTree 未启用外部插件。"
#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:33
#~ msgid "Plugin Error Stack"
@@ -2757,46 +2764,46 @@ msgstr ""
#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:59
msgid "Plugin Settings"
-msgstr ""
+msgstr "插件设置"
#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:25
msgid "Pending Tasks"
-msgstr ""
+msgstr "待完成任务"
#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:33
msgid "Scheduled Tasks"
-msgstr ""
+msgstr "计划任务"
#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:41
msgid "Failed Tasks"
-msgstr ""
+msgstr "失败任务"
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:18
#: src/tables/settings/UserTable.tsx:121
msgid "Groups"
-msgstr ""
+msgstr "群组"
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:30
msgid "Select settings relevant for user lifecycle. More available in"
-msgstr ""
+msgstr "选择与用户生命周期相关的设置。更多详情见 "
#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:35
msgid "System settings"
-msgstr ""
+msgstr "系统设置"
#: src/pages/Index/Settings/SystemSettings.tsx:65
msgid "Login"
-msgstr ""
+msgstr "登录"
#: src/pages/Index/Settings/SystemSettings.tsx:87
msgid "Barcodes"
-msgstr ""
+msgstr "条形码"
#: src/pages/Index/Settings/SystemSettings.tsx:106
#: src/pages/company/SupplierPartDetail.tsx:55
#: src/pages/part/PartDetail.tsx:516
msgid "Pricing"
-msgstr ""
+msgstr "定价"
#: src/pages/Index/Settings/SystemSettings.tsx:118
#~ msgid "Physical Units"
@@ -2804,21 +2811,21 @@ msgstr ""
#: src/pages/Index/Settings/SystemSettings.tsx:135
msgid "Exchange Rates"
-msgstr ""
+msgstr "汇率"
#: src/pages/Index/Settings/SystemSettings.tsx:141
msgid "Labels"
-msgstr ""
+msgstr "标签"
#: src/pages/Index/Settings/SystemSettings.tsx:147
#: src/pages/Index/Settings/UserSettings.tsx:99
msgid "Reporting"
-msgstr ""
+msgstr "报告"
#: src/pages/Index/Settings/SystemSettings.tsx:221
#: src/pages/part/PartDetail.tsx:565
msgid "Stocktake"
-msgstr ""
+msgstr "库存盘点"
#: src/pages/Index/Settings/SystemSettings.tsx:226
#: src/pages/build/BuildDetail.tsx:264
@@ -2826,31 +2833,31 @@ msgstr ""
#: src/pages/part/PartDetail.tsx:502
#: src/pages/sales/SalesOrderDetail.tsx:62
msgid "Build Orders"
-msgstr ""
+msgstr "生产订单"
-#: src/pages/Index/Settings/SystemSettings.tsx:283
+#: src/pages/Index/Settings/SystemSettings.tsx:290
msgid "Switch to User Setting"
-msgstr ""
+msgstr "切换到用户设置"
#: src/pages/Index/Settings/UserSettings.tsx:29
msgid "Account"
-msgstr ""
+msgstr "账户"
#: src/pages/Index/Settings/UserSettings.tsx:35
msgid "Security"
-msgstr ""
+msgstr "安全"
#: src/pages/Index/Settings/UserSettings.tsx:46
msgid "Display Options"
-msgstr ""
+msgstr "显示选项"
#: src/pages/Index/Settings/UserSettings.tsx:115
msgid "Account Settings"
-msgstr ""
+msgstr "账户设置"
#: src/pages/Index/Settings/UserSettings.tsx:119
msgid "Switch to System Setting"
-msgstr ""
+msgstr "切换到系统设置"
#: src/pages/Index/UserSettings.tsx:103
#~ msgid "User Settings"
@@ -2862,52 +2869,56 @@ msgstr ""
#: src/pages/NotFound.tsx:17
msgid "Not Found"
-msgstr ""
+msgstr "未找到"
#: src/pages/NotFound.tsx:20
msgid "Sorry, this page is not known or was moved."
-msgstr ""
+msgstr "抱歉,此页面未知或已移动。"
#: src/pages/NotFound.tsx:27
msgid "Go to the start page"
+msgstr "转到起始页"
+
+#: src/pages/Notifications.tsx:43
+msgid "Delete Notifications"
msgstr ""
-#: src/pages/Notifications.tsx:64
+#: src/pages/Notifications.tsx:108
msgid "Mark as unread"
-msgstr ""
+msgstr "标记为未读"
#: src/pages/build/BuildDetail.tsx:72
msgid "Base Part"
-msgstr ""
+msgstr "基础零件"
#: src/pages/build/BuildDetail.tsx:80
msgid "Build Status"
-msgstr ""
+msgstr "生产状态"
#: src/pages/build/BuildDetail.tsx:101
msgid "Build Details"
-msgstr ""
+msgstr "生产详情"
#: src/pages/build/BuildDetail.tsx:107
#: src/tables/build/BuildLineTable.tsx:195
msgid "Allocate Stock"
-msgstr ""
+msgstr "分配库存"
#: src/pages/build/BuildDetail.tsx:122
msgid "Incomplete Outputs"
-msgstr ""
+msgstr "未完成输出"
#: src/pages/build/BuildDetail.tsx:128
msgid "Completed Outputs"
-msgstr ""
+msgstr "已完成输出"
#: src/pages/build/BuildDetail.tsx:141
msgid "Consumed Stock"
-msgstr ""
+msgstr "已消耗库存"
#: src/pages/build/BuildDetail.tsx:153
msgid "Child Build Orders"
-msgstr ""
+msgstr "子生产订单"
#: src/pages/build/BuildDetail.tsx:163
#: src/pages/company/CompanyDetail.tsx:154
@@ -2916,9 +2927,9 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:78
#: src/pages/sales/ReturnOrderDetail.tsx:38
#: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/StockDetail.tsx:113
+#: src/pages/stock/StockDetail.tsx:122
msgid "Attachments"
-msgstr ""
+msgstr "附件"
#: src/pages/build/BuildDetail.tsx:175
#: src/pages/company/CompanyDetail.tsx:166
@@ -2926,10 +2937,10 @@ msgstr ""
#: src/pages/purchasing/PurchaseOrderDetail.tsx:90
#: src/pages/sales/ReturnOrderDetail.tsx:50
#: src/pages/sales/SalesOrderDetail.tsx:84
-#: src/pages/stock/StockDetail.tsx:125
+#: src/pages/stock/StockDetail.tsx:134
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:172
msgid "Notes"
-msgstr ""
+msgstr "备注"
#: src/pages/build/BuildDetail.tsx:185
#: src/pages/part/PartDetail.tsx:269
@@ -2944,7 +2955,7 @@ msgstr ""
#: src/pages/build/BuildDetail.tsx:191
msgid "Edit Build Order"
-msgstr ""
+msgstr "编辑生产订单"
#: src/pages/build/BuildDetail.tsx:196
#: src/pages/part/PartDetail.tsx:280
@@ -2961,7 +2972,7 @@ msgstr ""
#: src/pages/build/BuildDetail.tsx:217
msgid "Reporting Actions"
-msgstr ""
+msgstr "报告操作"
#: src/pages/build/BuildDetail.tsx:221
#~ msgid "Edit build order"
@@ -2969,11 +2980,11 @@ msgstr ""
#: src/pages/build/BuildDetail.tsx:222
msgid "Report"
-msgstr ""
+msgstr "报告"
#: src/pages/build/BuildDetail.tsx:223
msgid "Print build report"
-msgstr ""
+msgstr "打印生产报告"
#: src/pages/build/BuildDetail.tsx:226
#~ msgid "Duplicate build order"
@@ -2981,7 +2992,7 @@ msgstr ""
#: src/pages/build/BuildDetail.tsx:229
msgid "Build Order Actions"
-msgstr ""
+msgstr "生产订单操作"
#: src/pages/build/BuildDetail.tsx:231
#~ msgid "Delete build order"
@@ -2999,21 +3010,21 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:37
#: src/pages/company/SupplierPartDetail.tsx:35
#: src/pages/part/PartDetail.tsx:449
-#: src/pages/stock/StockDetail.tsx:70
+#: src/pages/stock/StockDetail.tsx:71
msgid "Details"
-msgstr ""
+msgstr "详情"
#: src/pages/company/CompanyDetail.tsx:81
msgid "Manufactured Parts"
-msgstr ""
+msgstr "制成零件"
#: src/pages/company/CompanyDetail.tsx:90
msgid "Supplied Parts"
-msgstr ""
+msgstr "已提供的零件"
#: src/pages/company/CompanyDetail.tsx:131
msgid "Assigned Stock"
-msgstr ""
+msgstr "已分配的库存"
#: src/pages/company/CompanyDetail.tsx:175
#~ msgid "Edit company"
@@ -3021,7 +3032,7 @@ msgstr ""
#: src/pages/company/CompanyDetail.tsx:182
msgid "Edit Company"
-msgstr ""
+msgstr "编辑公司"
#: src/pages/company/CompanyDetail.tsx:189
#~ msgid "Delete company"
@@ -3029,30 +3040,30 @@ msgstr ""
#: src/pages/company/CompanyDetail.tsx:191
msgid "Company Actions"
-msgstr ""
+msgstr "公司操作"
#: src/pages/company/CustomerDetail.tsx:8
#: src/tables/sales/ReturnOrderTable.tsx:64
#: src/tables/sales/SalesOrderTable.tsx:95
msgid "Customer"
-msgstr ""
+msgstr "客户"
#: src/pages/company/ManufacturerDetail.tsx:8
#: src/pages/company/ManufacturerPartDetail.tsx:88
msgid "Manufacturer"
-msgstr ""
+msgstr "制造商"
#: src/pages/company/ManufacturerPartDetail.tsx:42
#: src/pages/part/CategoryDetail.tsx:71
#: src/pages/part/PartDetail.tsx:464
msgid "Parameters"
-msgstr ""
+msgstr "参数"
#: src/pages/company/ManufacturerPartDetail.tsx:54
#: src/pages/part/PartDetail.tsx:534
#: src/pages/purchasing/PurchasingIndex.tsx:26
msgid "Suppliers"
-msgstr ""
+msgstr "供应商"
#: src/pages/company/ManufacturerPartDetail.tsx:98
msgid "ManufacturerPart"
@@ -3062,12 +3073,12 @@ msgstr ""
#: src/pages/company/SupplierPartDetail.tsx:68
#: src/tables/purchasing/PurchaseOrderTable.tsx:73
msgid "Supplier"
-msgstr ""
+msgstr "供应商"
#: src/pages/company/SupplierPartDetail.tsx:40
#: src/pages/purchasing/PurchaseOrderDetail.tsx:66
msgid "Received Stock"
-msgstr ""
+msgstr "接收库存"
#: src/pages/part/CategoryDetail.tsx:52
#~ msgid "Subcategories"
@@ -3083,7 +3094,7 @@ msgstr ""
#: src/tables/plugin/PluginListTable.tsx:170
#: src/tables/plugin/PluginListTable.tsx:297
msgid "Description"
-msgstr ""
+msgstr "描述"
#: src/pages/part/PartDetail.tsx:125
msgid "Variant of"
@@ -3095,9 +3106,9 @@ msgid "Available Stock"
msgstr ""
#: src/pages/part/PartDetail.tsx:145
-#: src/tables/stock/StockItemTable.tsx:264
+#: src/tables/stock/StockItemTable.tsx:265
msgid "In Stock"
-msgstr ""
+msgstr "入库"
#: src/pages/part/PartDetail.tsx:155
msgid "Minimum Stock"
@@ -3107,7 +3118,7 @@ msgstr ""
#: src/tables/bom/BomTable.tsx:180
#: src/tables/build/BuildLineTable.tsx:92
msgid "On order"
-msgstr ""
+msgstr "订购中"
#: src/pages/part/PartDetail.tsx:181
msgid "Allocated to Build Orders"
@@ -3120,22 +3131,22 @@ msgstr ""
#: src/pages/part/PartDetail.tsx:207
#: src/tables/bom/BomTable.tsx:204
msgid "Can Build"
-msgstr ""
+msgstr "可以创建"
#: src/pages/part/PartDetail.tsx:218
#: src/tables/bom/BomTable.tsx:188
#: src/tables/part/PartTable.tsx:95
msgid "Building"
-msgstr ""
+msgstr "正在生产"
#: src/pages/part/PartDetail.tsx:228
-#: src/tables/notifications/NotificationsTable.tsx:29
+#: src/tables/notifications/NotificationsTable.tsx:31
msgid "Category"
-msgstr ""
+msgstr "类别"
#: src/pages/part/PartDetail.tsx:239
msgid "IPN"
-msgstr ""
+msgstr "内部零件编码 IPN"
#: src/pages/part/PartDetail.tsx:250
msgid "Revision"
@@ -3144,22 +3155,22 @@ msgstr ""
#: src/pages/part/PartDetail.tsx:261
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
msgid "Units"
-msgstr ""
+msgstr "单位"
#: src/pages/part/PartDetail.tsx:271
#: src/tables/settings/PendingTasksTable.tsx:40
msgid "Keywords"
-msgstr ""
+msgstr "关键词"
#: src/pages/part/PartDetail.tsx:281
msgid "Creation Date"
-msgstr ""
+msgstr "创建日期"
#: src/pages/part/PartDetail.tsx:295
#: src/tables/bom/BomTable.tsx:137
#: src/tables/part/PartTable.tsx:154
msgid "Price Range"
-msgstr ""
+msgstr "价格范围"
#: src/pages/part/PartDetail.tsx:310
#~ msgid "Edit part"
@@ -3187,73 +3198,73 @@ msgstr ""
#: src/pages/part/PartDetail.tsx:415
msgid "Link"
-msgstr ""
+msgstr "链接"
#: src/pages/part/PartDetail.tsx:427
msgid "Responsible"
-msgstr ""
+msgstr "责任人"
#: src/pages/part/PartDetail.tsx:482
msgid "Variants"
-msgstr ""
+msgstr "变体"
#: src/pages/part/PartDetail.tsx:489
-#: src/pages/stock/StockDetail.tsx:82
+#: src/pages/stock/StockDetail.tsx:83
msgid "Allocations"
-msgstr ""
+msgstr "分配"
#: src/pages/part/PartDetail.tsx:495
msgid "Bill of Materials"
-msgstr ""
+msgstr "物料清单"
#: src/pages/part/PartDetail.tsx:509
msgid "Used In"
-msgstr ""
+msgstr "用于"
#: src/pages/part/PartDetail.tsx:521
#: src/pages/purchasing/PurchasingIndex.tsx:37
msgid "Manufacturers"
-msgstr ""
+msgstr "制造商"
#: src/pages/part/PartDetail.tsx:560
msgid "Scheduling"
-msgstr ""
+msgstr "计划任务"
#: src/pages/part/PartDetail.tsx:570
msgid "Test Templates"
-msgstr ""
+msgstr "测试模板"
#: src/pages/part/PartDetail.tsx:581
msgid "Related Parts"
-msgstr ""
+msgstr "关联零件"
#: src/pages/part/PartDetail.tsx:636
msgid "Edit Part"
-msgstr ""
+msgstr "编辑零件"
#: src/pages/part/PartDetail.tsx:657
msgid "Stock Actions"
-msgstr ""
+msgstr "库存操作"
#: src/pages/part/PartDetail.tsx:662
msgid "Count Stock"
-msgstr ""
+msgstr "库存数量"
#: src/pages/part/PartDetail.tsx:663
msgid "Count part stock"
-msgstr ""
+msgstr "清点零件库存"
#: src/pages/part/PartDetail.tsx:667
msgid "Transfer Stock"
-msgstr ""
+msgstr "转移库存"
#: src/pages/part/PartDetail.tsx:668
msgid "Transfer part stock"
-msgstr ""
+msgstr "转移零件库存"
#: src/pages/part/PartDetail.tsx:674
msgid "Part Actions"
-msgstr ""
+msgstr "零件选项"
#: src/pages/part/PartIndex.tsx:29
#~ msgid "Categories"
@@ -3263,48 +3274,48 @@ msgstr ""
#: src/pages/sales/ReturnOrderDetail.tsx:33
#: src/pages/sales/SalesOrderDetail.tsx:42
msgid "Order Details"
-msgstr ""
+msgstr "订单细节"
#: src/pages/purchasing/PurchaseOrderDetail.tsx:60
#: src/pages/sales/SalesOrderDetail.tsx:47
msgid "Line Items"
-msgstr ""
+msgstr "行项目"
#: src/pages/purchasing/PurchaseOrderDetail.tsx:119
msgid "Order Actions"
-msgstr ""
+msgstr "订单操作"
#: src/pages/sales/SalesIndex.tsx:33
msgid "Customers"
-msgstr ""
+msgstr "客户"
#: src/pages/sales/SalesOrderDetail.tsx:52
msgid "Pending Shipments"
-msgstr ""
+msgstr "待配送"
#: src/pages/sales/SalesOrderDetail.tsx:57
msgid "Completed Shipments"
-msgstr ""
+msgstr "完成配送"
#: src/pages/stock/LocationDetail.tsx:38
#~ msgid "Sublocations"
#~ msgstr "Sublocations"
-#: src/pages/stock/StockDetail.tsx:76
+#: src/pages/stock/StockDetail.tsx:77
msgid "Stock Tracking"
-msgstr ""
+msgstr "库存跟踪"
-#: src/pages/stock/StockDetail.tsx:90
+#: src/pages/stock/StockDetail.tsx:91
msgid "Test Data"
-msgstr ""
+msgstr "测试数据"
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:105
msgid "Installed Items"
-msgstr ""
+msgstr "已安装的项目"
-#: src/pages/stock/StockDetail.tsx:102
+#: src/pages/stock/StockDetail.tsx:111
msgid "Child Items"
-msgstr ""
+msgstr "子项目"
#: src/pages/stock/StockDetail.tsx:155
#~ msgid "Link custom barcode to stock item"
@@ -3314,71 +3325,82 @@ msgstr ""
#~ msgid "Unlink custom barcode from stock item"
#~ msgstr "Unlink custom barcode from stock item"
-#: src/pages/stock/StockDetail.tsx:169
+#: src/pages/stock/StockDetail.tsx:178
msgid "Stock Operations"
-msgstr ""
+msgstr "库存操作"
-#: src/pages/stock/StockDetail.tsx:174
+#: src/pages/stock/StockDetail.tsx:183
msgid "Count stock"
-msgstr ""
+msgstr "库存计数"
-#: src/pages/stock/StockDetail.tsx:178
+#: src/pages/stock/StockDetail.tsx:187
+#: src/tables/stock/StockItemTestResultTable.tsx:299
msgid "Add"
-msgstr ""
+msgstr "添加"
-#: src/pages/stock/StockDetail.tsx:179
+#: src/pages/stock/StockDetail.tsx:188
msgid "Add stock"
-msgstr ""
+msgstr "添加库存"
-#: src/pages/stock/StockDetail.tsx:184
+#: src/pages/stock/StockDetail.tsx:193
msgid "Remove stock"
-msgstr ""
+msgstr "移除库存"
-#: src/pages/stock/StockDetail.tsx:188
+#: src/pages/stock/StockDetail.tsx:197
msgid "Transfer"
-msgstr ""
+msgstr "转移"
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:198
msgid "Transfer stock"
-msgstr ""
-
-#: src/pages/stock/StockDetail.tsx:201
-msgid "Duplicate stock item"
-msgstr ""
+msgstr "转移库存"
#: src/pages/stock/StockDetail.tsx:205
#~ msgid "Edit stock item"
#~ msgstr "Edit stock item"
+#: src/pages/stock/StockDetail.tsx:210
+msgid "Duplicate stock item"
+msgstr "复制库存项"
+
#: src/pages/stock/StockDetail.tsx:217
#~ msgid "Delete stock item"
#~ msgstr "Delete stock item"
-#: src/tables/ColumnRenderers.tsx:126
-msgid "Target Date"
+#: src/tables/ColumnRenderers.tsx:78
+msgid "Note"
msgstr ""
-#: src/tables/ColumnRenderers.tsx:163
+#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/plugin/PluginListTable.tsx:180
+#: src/tables/stock/StockItemTestResultTable.tsx:188
+msgid "Date"
+msgstr "日期"
+
+#: src/tables/ColumnRenderers.tsx:137
+msgid "Target Date"
+msgstr "预计日期"
+
+#: src/tables/ColumnRenderers.tsx:174
#: src/tables/settings/CurrencyTable.tsx:23
msgid "Currency"
-msgstr ""
+msgstr "货币"
-#: src/tables/ColumnRenderers.tsx:177
+#: src/tables/ColumnRenderers.tsx:188
msgid "Total Price"
-msgstr ""
+msgstr "总价"
#: src/tables/ColumnSelect.tsx:17
#: src/tables/ColumnSelect.tsx:24
msgid "Select Columns"
-msgstr ""
+msgstr "选择列"
#: src/tables/Details.tsx:111
msgid "Part is not active"
-msgstr ""
+msgstr "零件未激活"
#: src/tables/Details.tsx:117
msgid "Inactive"
-msgstr ""
+msgstr "未激活"
#: src/tables/Details.tsx:124
msgid "Part is a template part (variants can be made from this part)"
@@ -3386,11 +3408,11 @@ msgstr ""
#: src/tables/Details.tsx:130
msgid "Part can be assembled from other parts"
-msgstr ""
+msgstr "此零件可以由另外一个零件装配"
#: src/tables/Details.tsx:136
msgid "Part can be used in assemblies"
-msgstr ""
+msgstr "零件可以用于装配体"
#: src/tables/Details.tsx:142
msgid "Part stock is tracked by serial number"
@@ -3413,7 +3435,7 @@ msgstr ""
#: src/tables/part/PartTable.tsx:240
#: src/tables/part/PartVariantTable.tsx:25
msgid "Virtual"
-msgstr ""
+msgstr "虚拟"
#: src/tables/Details.tsx:354
msgid "Copied"
@@ -3425,267 +3447,268 @@ msgstr ""
#: src/tables/DownloadAction.tsx:12
msgid "CSV"
-msgstr ""
+msgstr "CSV"
#: src/tables/DownloadAction.tsx:13
msgid "TSV"
-msgstr ""
+msgstr "TSV"
#: src/tables/DownloadAction.tsx:14
msgid "Excel"
-msgstr ""
+msgstr "Excel"
#: src/tables/DownloadAction.tsx:22
msgid "Download selected data"
-msgstr ""
+msgstr "下载所选数据"
#: src/tables/Filter.tsx:88
#: src/tables/build/BuildOrderTable.tsx:118
msgid "Assigned to me"
-msgstr ""
+msgstr "已分派给我的"
#: src/tables/Filter.tsx:89
#: src/tables/build/BuildOrderTable.tsx:119
msgid "Show orders assigned to me"
-msgstr ""
+msgstr "显示分配给我的订单"
#: src/tables/Filter.tsx:96
msgid "Outstanding"
-msgstr ""
+msgstr "未完成"
#: src/tables/Filter.tsx:97
msgid "Show outstanding orders"
-msgstr ""
+msgstr "显示未完成的订单"
#: src/tables/Filter.tsx:104
msgid "Overdue"
-msgstr ""
+msgstr "逾期"
#: src/tables/Filter.tsx:105
msgid "Show overdue orders"
-msgstr ""
+msgstr "显示逾期订单"
#: src/tables/FilterSelectDrawer.tsx:51
msgid "Remove filter"
-msgstr ""
+msgstr "移除过滤器"
-#: src/tables/FilterSelectDrawer.tsx:145
+#: src/tables/FilterSelectDrawer.tsx:147
msgid "Select filter"
-msgstr ""
+msgstr "选择过滤器"
-#: src/tables/FilterSelectDrawer.tsx:146
+#: src/tables/FilterSelectDrawer.tsx:148
msgid "Filter"
-msgstr ""
+msgstr "过滤器"
-#: src/tables/FilterSelectDrawer.tsx:153
+#: src/tables/FilterSelectDrawer.tsx:155
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:33
+#: src/tables/stock/StockItemTestResultTable.tsx:176
msgid "Value"
-msgstr ""
+msgstr "值"
-#: src/tables/FilterSelectDrawer.tsx:154
+#: src/tables/FilterSelectDrawer.tsx:156
msgid "Select filter value"
-msgstr ""
+msgstr "选择过滤器值"
-#: src/tables/FilterSelectDrawer.tsx:188
+#: src/tables/FilterSelectDrawer.tsx:190
msgid "Table Filters"
-msgstr ""
+msgstr "表格筛选"
-#: src/tables/FilterSelectDrawer.tsx:219
+#: src/tables/FilterSelectDrawer.tsx:224
msgid "Add Filter"
-msgstr ""
+msgstr "添加过滤条件"
-#: src/tables/FilterSelectDrawer.tsx:228
+#: src/tables/FilterSelectDrawer.tsx:233
msgid "Clear Filters"
-msgstr ""
+msgstr "清除筛选"
-#: src/tables/InvenTreeTable.tsx:88
-#: src/tables/InvenTreeTable.tsx:352
-#: src/tables/InvenTreeTable.tsx:373
+#: src/tables/InvenTreeTable.tsx:89
+#: src/tables/InvenTreeTable.tsx:353
+#: src/tables/InvenTreeTable.tsx:374
msgid "No records found"
-msgstr ""
+msgstr "没有找到记录"
-#: src/tables/InvenTreeTable.tsx:387
+#: src/tables/InvenTreeTable.tsx:385
msgid "Server returned incorrect data type"
-msgstr ""
+msgstr "服务器返回了错误的数据类型"
-#: src/tables/InvenTreeTable.tsx:395
+#: src/tables/InvenTreeTable.tsx:393
msgid "Bad request"
-msgstr ""
+msgstr "错误的请求"
-#: src/tables/InvenTreeTable.tsx:398
+#: src/tables/InvenTreeTable.tsx:396
msgid "Unauthorized"
-msgstr ""
+msgstr "未授权"
-#: src/tables/InvenTreeTable.tsx:401
+#: src/tables/InvenTreeTable.tsx:399
msgid "Forbidden"
-msgstr ""
+msgstr "禁止访问"
-#: src/tables/InvenTreeTable.tsx:404
+#: src/tables/InvenTreeTable.tsx:402
msgid "Not found"
-msgstr ""
+msgstr "未找到"
-#: src/tables/InvenTreeTable.tsx:446
-#: src/tables/InvenTreeTable.tsx:537
+#: src/tables/InvenTreeTable.tsx:444
+#: src/tables/InvenTreeTable.tsx:535
msgid "Delete selected records"
-msgstr ""
+msgstr "删除选中的记录"
-#: src/tables/InvenTreeTable.tsx:450
+#: src/tables/InvenTreeTable.tsx:448
msgid "Are you sure you want to delete the selected records?"
-msgstr ""
+msgstr "确定要删除选中的记录吗?"
-#: src/tables/InvenTreeTable.tsx:452
+#: src/tables/InvenTreeTable.tsx:450
msgid "This action cannot be undone!"
-msgstr ""
+msgstr "此操作无法撤消!"
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:478
msgid "Deleted records"
-msgstr ""
+msgstr "已删除记录"
-#: src/tables/InvenTreeTable.tsx:481
+#: src/tables/InvenTreeTable.tsx:479
msgid "Records were deleted successfully"
-msgstr ""
+msgstr "记录删除成功。"
-#: src/tables/InvenTreeTable.tsx:490
+#: src/tables/InvenTreeTable.tsx:488
msgid "Failed to delete records"
-msgstr ""
+msgstr "无法删除记录"
-#: src/tables/InvenTreeTable.tsx:518
-#: src/tables/InvenTreeTable.tsx:519
+#: src/tables/InvenTreeTable.tsx:516
+#: src/tables/InvenTreeTable.tsx:517
msgid "Barcode actions"
-msgstr ""
+msgstr "条形码操作"
-#: src/tables/InvenTreeTable.tsx:527
-#: src/tables/InvenTreeTable.tsx:528
+#: src/tables/InvenTreeTable.tsx:525
+#: src/tables/InvenTreeTable.tsx:526
msgid "Print actions"
-msgstr ""
+msgstr "打印操作"
-#: src/tables/InvenTreeTable.tsx:553
+#: src/tables/InvenTreeTable.tsx:551
msgid "Refresh data"
-msgstr ""
+msgstr "刷新数据"
-#: src/tables/InvenTreeTable.tsx:571
+#: src/tables/InvenTreeTable.tsx:569
msgid "Table filters"
-msgstr ""
+msgstr "表格过滤器"
#: src/tables/RowActions.tsx:149
msgid "Actions"
-msgstr ""
+msgstr "操作"
#: src/tables/bom/BomTable.tsx:76
msgid "This BOM item is defined for a different parent"
-msgstr ""
+msgstr "此物料清单 项目是为另一个父级定义的"
#: src/tables/bom/BomTable.tsx:91
msgid "Part Information"
-msgstr ""
+msgstr "零件信息"
#: src/tables/bom/BomTable.tsx:155
#: src/tables/part/PartTable.tsx:127
msgid "No stock"
-msgstr ""
+msgstr "无库存"
#: src/tables/bom/BomTable.tsx:163
#: src/tables/build/BuildLineTable.tsx:64
msgid "Includes substitute stock"
-msgstr ""
+msgstr "包括替代库存"
#: src/tables/bom/BomTable.tsx:172
#: src/tables/build/BuildLineTable.tsx:74
msgid "Includes variant stock"
-msgstr ""
+msgstr "包括变体库存"
#: src/tables/bom/BomTable.tsx:197
#: src/tables/part/PartTable.tsx:146
-#: src/tables/stock/StockItemTable.tsx:171
+#: src/tables/stock/StockItemTable.tsx:172
msgid "Stock Information"
-msgstr ""
+msgstr "库存信息"
#: src/tables/bom/BomTable.tsx:208
#: src/tables/build/BuildLineTable.tsx:170
msgid "Consumable item"
-msgstr ""
+msgstr "可耗物品"
#: src/tables/bom/BomTable.tsx:227
msgid "Trackable Part"
-msgstr ""
+msgstr "可追溯零件"
#: src/tables/bom/BomTable.tsx:228
msgid "Show trackable items"
-msgstr ""
+msgstr "显示可跟踪项目"
#: src/tables/bom/BomTable.tsx:232
msgid "Assembled Part"
-msgstr ""
+msgstr "组装零件"
#: src/tables/bom/BomTable.tsx:233
msgid "Show asssmbled items"
-msgstr ""
+msgstr "显示已装配的项目"
#: src/tables/bom/BomTable.tsx:237
msgid "Show items with available stock"
-msgstr ""
+msgstr "显示有可用库存的项目"
#: src/tables/bom/BomTable.tsx:241
msgid "Show items on order"
-msgstr ""
+msgstr "按顺序显示项目"
#: src/tables/bom/BomTable.tsx:245
msgid "Show validated items"
-msgstr ""
+msgstr "显示已验证的项目"
#: src/tables/bom/BomTable.tsx:249
#: src/tables/bom/UsedInTable.tsx:58
msgid "Show inherited items"
-msgstr ""
+msgstr "显示继承的项目"
#: src/tables/bom/BomTable.tsx:253
#: src/tables/bom/UsedInTable.tsx:62
msgid "Show optional items"
-msgstr ""
+msgstr "显示可选项目"
#: src/tables/bom/BomTable.tsx:257
msgid "Show consumable items"
-msgstr ""
+msgstr "显示可消耗项目"
#: src/tables/bom/BomTable.tsx:261
msgid "Has Pricing"
-msgstr ""
+msgstr "是否有价格"
#: src/tables/bom/BomTable.tsx:262
msgid "Show items with pricing"
-msgstr ""
+msgstr "显示带定价的项目"
#: src/tables/bom/BomTable.tsx:273
msgid "View BOM"
-msgstr ""
+msgstr "查看 物料清单"
#: src/tables/bom/BomTable.tsx:284
msgid "Validate BOM line"
-msgstr ""
+msgstr "验证物料清单行"
#: src/tables/bom/BomTable.tsx:292
msgid "Edit Substitutes"
-msgstr ""
+msgstr "编辑替代零件"
#: src/tables/bom/BomTable.tsx:306
msgid "Edit Bom Item"
-msgstr ""
+msgstr "编辑物料清单条目"
#: src/tables/bom/BomTable.tsx:308
msgid "Bom item updated"
-msgstr ""
+msgstr "物料清单 项目已更新"
#: src/tables/bom/BomTable.tsx:323
msgid "Delete Bom Item"
-msgstr ""
+msgstr "删除物料清单项目"
#: src/tables/bom/BomTable.tsx:324
msgid "Bom item deleted"
-msgstr ""
+msgstr "物料清单条目已删除"
#: src/tables/bom/BomTable.tsx:326
msgid "Are you sure you want to remove this BOM item?"
-msgstr ""
+msgstr "您确定要删除此物料清单项目吗?"
#: src/tables/bom/UsedInTable.tsx:66
#: src/tables/build/BuildOrderTable.tsx:102
@@ -3694,23 +3717,23 @@ msgstr ""
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:188
#: src/tables/plugin/PluginListTable.tsx:627
-#: src/tables/stock/StockItemTable.tsx:228
+#: src/tables/stock/StockItemTable.tsx:229
msgid "Active"
-msgstr ""
+msgstr "激活"
#: src/tables/bom/UsedInTable.tsx:67
msgid "Show active assemblies"
-msgstr ""
+msgstr "显示活动装配体"
#: src/tables/bom/UsedInTable.tsx:71
#: src/tables/part/PartTable.tsx:194
#: src/tables/part/PartVariantTable.tsx:30
msgid "Trackable"
-msgstr ""
+msgstr "可追踪"
#: src/tables/bom/UsedInTable.tsx:72
msgid "Show trackable assemblies"
-msgstr ""
+msgstr "显示可跟踪装配体"
#: src/tables/build/BuildLineTable.tsx:34
msgid "Show allocated lines"
@@ -3718,10 +3741,10 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:38
#: src/tables/part/PartTable.tsx:119
-#: src/tables/stock/StockItemTable.tsx:135
-#: src/tables/stock/StockItemTable.tsx:249
+#: src/tables/stock/StockItemTable.tsx:136
+#: src/tables/stock/StockItemTable.tsx:250
msgid "Available"
-msgstr ""
+msgstr "可用的"
#: src/tables/build/BuildLineTable.tsx:39
msgid "Show lines with available stock"
@@ -3729,7 +3752,7 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:43
msgid "Consumable"
-msgstr ""
+msgstr "消耗品"
#: src/tables/build/BuildLineTable.tsx:44
msgid "Show consumable lines"
@@ -3737,7 +3760,7 @@ msgstr ""
#: src/tables/build/BuildLineTable.tsx:48
msgid "Optional"
-msgstr ""
+msgstr "可选项"
#: src/tables/build/BuildLineTable.tsx:49
msgid "Show optional lines"
@@ -3748,9 +3771,9 @@ msgid "In production"
msgstr ""
#: src/tables/build/BuildLineTable.tsx:103
-#: src/tables/stock/StockItemTable.tsx:144
+#: src/tables/stock/StockItemTable.tsx:145
msgid "No stock available"
-msgstr ""
+msgstr "无可用库存"
#: src/tables/build/BuildLineTable.tsx:132
msgid "Unit Quantity"
@@ -3766,44 +3789,44 @@ msgstr ""
#: src/tables/build/BuildOrderTable.tsx:103
msgid "Show active orders"
-msgstr ""
+msgstr "显示活动订单"
#: src/tables/build/BuildOrderTable.tsx:107
#: src/tables/purchasing/PurchaseOrderTable.tsx:56
#: src/tables/sales/ReturnOrderTable.tsx:46
#: src/tables/sales/SalesOrderTable.tsx:53
msgid "Filter by order status"
-msgstr ""
+msgstr "按订单状态筛选"
#: src/tables/build/BuildOrderTable.tsx:113
msgid "Show overdue status"
-msgstr ""
+msgstr "显示逾期状态"
#: src/tables/build/BuildOrderTable.tsx:140
#: src/tables/build/BuildOrderTable.tsx:158
msgid "Add Build Order"
-msgstr ""
+msgstr "添加生产订单"
#: src/tables/company/AddressTable.tsx:121
#: src/tables/company/AddressTable.tsx:185
msgid "Add Address"
-msgstr ""
+msgstr "新增地址"
#: src/tables/company/AddressTable.tsx:126
msgid "Address created"
-msgstr ""
+msgstr "地址已创建"
#: src/tables/company/AddressTable.tsx:135
msgid "Edit Address"
-msgstr ""
+msgstr "编辑地址"
#: src/tables/company/AddressTable.tsx:143
msgid "Delete Address"
-msgstr ""
+msgstr "删除地址"
#: src/tables/company/AddressTable.tsx:145
msgid "Are you sure you want to delete this address?"
-msgstr ""
+msgstr "您确定要删除该地址?"
#: src/tables/company/CompanyTable.tsx:62
msgid "New Company"
@@ -3815,7 +3838,7 @@ msgstr ""
#: src/tables/company/ContactTable.tsx:73
msgid "Edit Contact"
-msgstr ""
+msgstr "编辑联系人"
#: src/tables/company/ContactTable.tsx:80
msgid "Add Contact"
@@ -3823,43 +3846,43 @@ msgstr ""
#: src/tables/company/ContactTable.tsx:91
msgid "Delete Contact"
-msgstr ""
+msgstr "删除联系人"
#: src/tables/company/ContactTable.tsx:131
msgid "Add contact"
-msgstr ""
+msgstr "添加联系人"
#: src/tables/general/AttachmentTable.tsx:161
msgid "File uploaded"
-msgstr ""
+msgstr "文件已上传"
#: src/tables/general/AttachmentTable.tsx:162
msgid "File {0} uploaded successfully"
-msgstr ""
+msgstr "文件 {0} 上传成功。"
#: src/tables/general/AttachmentTable.tsx:173
msgid "Upload Error"
-msgstr ""
+msgstr "上传错误"
#: src/tables/general/AttachmentTable.tsx:174
msgid "File could not be uploaded"
-msgstr ""
+msgstr "文件无法上传。"
#: src/tables/general/AttachmentTable.tsx:187
msgid "Add attachment"
-msgstr ""
+msgstr "添加附件"
#: src/tables/general/AttachmentTable.tsx:206
msgid "Add external link"
-msgstr ""
+msgstr "添加外部链接"
#: src/tables/general/AttachmentTable.tsx:237
msgid "No attachments found"
-msgstr ""
+msgstr "找不到附件。"
#: src/tables/general/AttachmentTable.tsx:252
msgid "Upload attachment"
-msgstr ""
+msgstr "上传附件"
#: src/tables/machine/MachineListTable.tsx:197
msgid "Machine restarted"
@@ -3924,9 +3947,9 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderTable.tsx:55
#: src/tables/sales/ReturnOrderTable.tsx:45
#: src/tables/sales/SalesOrderTable.tsx:52
-#: src/tables/stock/StockItemTable.tsx:233
+#: src/tables/stock/StockItemTable.tsx:234
msgid "Status"
-msgstr ""
+msgstr "状态"
#: src/tables/machine/MachineListTable.tsx:334
#: src/tables/machine/MachineTypeTable.tsx:252
@@ -3986,7 +4009,7 @@ msgstr ""
#: src/tables/plugin/PluginListTable.tsx:213
#: src/tables/plugin/PluginListTable.tsx:632
msgid "Builtin"
-msgstr ""
+msgstr "内置"
#: src/tables/machine/MachineTypeTable.tsx:142
msgid "Available drivers"
@@ -4016,31 +4039,31 @@ msgstr ""
msgid "Machine driver detail"
msgstr ""
-#: src/tables/notifications/NotificationsTable.tsx:24
+#: src/tables/notifications/NotificationsTable.tsx:26
msgid "Age"
-msgstr ""
+msgstr "寿命"
-#: src/tables/notifications/NotificationsTable.tsx:38
+#: src/tables/notifications/NotificationsTable.tsx:40
#: src/tables/plugin/PluginErrorTable.tsx:37
msgid "Message"
-msgstr ""
+msgstr "信息"
#: src/tables/part/PartCategoryTable.tsx:64
#: src/tables/part/PartTable.tsx:182
msgid "Include Subcategories"
-msgstr ""
+msgstr "包含子类别"
#: src/tables/part/PartCategoryTable.tsx:65
msgid "Include subcategories in results"
-msgstr ""
+msgstr "在结果中包含子类别"
#: src/tables/part/PartCategoryTable.tsx:69
msgid "Structural"
-msgstr ""
+msgstr "结构性"
#: src/tables/part/PartCategoryTable.tsx:70
msgid "Show structural categories"
-msgstr ""
+msgstr "显示结构性类别"
#: src/tables/part/PartCategoryTable.tsx:77
msgid "New Part Category"
@@ -4054,53 +4077,53 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:93
+#: src/tables/part/PartParameterTable.tsx:95
msgid "New Part Parameter"
msgstr ""
-#: src/tables/part/PartParameterTable.tsx:108
-#: src/tables/part/PartParameterTable.tsx:130
+#: src/tables/part/PartParameterTable.tsx:110
+#: src/tables/part/PartParameterTable.tsx:132
msgid "Edit Part Parameter"
-msgstr ""
+msgstr "编辑零件参数"
-#: src/tables/part/PartParameterTable.tsx:116
-#: src/tables/part/PartParameterTable.tsx:138
+#: src/tables/part/PartParameterTable.tsx:118
+#: src/tables/part/PartParameterTable.tsx:140
msgid "Delete Part Parameter"
-msgstr ""
+msgstr "删除零件参数"
-#: src/tables/part/PartParameterTable.tsx:155
+#: src/tables/part/PartParameterTable.tsx:157
msgid "Add parameter"
-msgstr ""
+msgstr "添加参数"
-#: src/tables/part/PartParameterTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:274
+#: src/tables/part/PartParameterTable.tsx:178
+#: src/tables/stock/StockItemTable.tsx:275
msgid "Include Variants"
-msgstr ""
+msgstr "包含变体"
#: src/tables/part/PartParameterTemplateTable.tsx:31
msgid "Checkbox"
-msgstr ""
+msgstr "勾选框"
#: src/tables/part/PartParameterTemplateTable.tsx:32
msgid "Show checkbox templates"
-msgstr ""
+msgstr "显示复选框模板"
#: src/tables/part/PartParameterTemplateTable.tsx:36
msgid "Has choices"
-msgstr ""
+msgstr "有选项"
#: src/tables/part/PartParameterTemplateTable.tsx:37
msgid "Show templates with choices"
-msgstr ""
+msgstr "显示有选项的模板"
#: src/tables/part/PartParameterTemplateTable.tsx:41
#: src/tables/part/PartTable.tsx:200
msgid "Has Units"
-msgstr ""
+msgstr "有单位"
#: src/tables/part/PartParameterTemplateTable.tsx:42
msgid "Show templates with units"
-msgstr ""
+msgstr "显示有单位的模板"
#: src/tables/part/PartParameterTemplateTable.tsx:80
msgid "Add Parameter Template"
@@ -4108,211 +4131,239 @@ msgstr ""
#: src/tables/part/PartParameterTemplateTable.tsx:92
msgid "Edit Parameter Template"
-msgstr ""
+msgstr "编辑参数模板"
#: src/tables/part/PartParameterTemplateTable.tsx:100
msgid "Delete Parameter Template"
-msgstr ""
+msgstr "删除零件参数模板"
#: src/tables/part/PartParameterTemplateTable.tsx:130
msgid "Add parameter template"
-msgstr ""
+msgstr "添加参数模板"
#: src/tables/part/PartTable.tsx:80
msgid "Minimum stock"
-msgstr ""
+msgstr "最低库存数"
#: src/tables/part/PartTable.tsx:89
msgid "On Order"
-msgstr ""
+msgstr "订购中"
#: src/tables/part/PartTable.tsx:102
msgid "Build Order Allocations"
-msgstr ""
+msgstr "分配生产订单"
#: src/tables/part/PartTable.tsx:111
msgid "Sales Order Allocations"
-msgstr ""
+msgstr "分配销售订单"
#: src/tables/part/PartTable.tsx:171
msgid "Filter by part active status"
-msgstr ""
+msgstr "按零件活动状态筛选"
#: src/tables/part/PartTable.tsx:176
-#: src/tables/stock/StockItemTable.tsx:239
+#: src/tables/stock/StockItemTable.tsx:240
msgid "Assembly"
-msgstr ""
+msgstr "装配"
#: src/tables/part/PartTable.tsx:177
msgid "Filter by assembly attribute"
-msgstr ""
+msgstr "按装配属性筛选"
#: src/tables/part/PartTable.tsx:183
msgid "Include parts in subcategories"
-msgstr ""
+msgstr "包括子类别中的零件"
#: src/tables/part/PartTable.tsx:188
msgid "Component"
-msgstr ""
+msgstr "组件"
#: src/tables/part/PartTable.tsx:189
msgid "Filter by component attribute"
-msgstr ""
+msgstr "按组件属性筛选"
#: src/tables/part/PartTable.tsx:195
msgid "Filter by trackable attribute"
-msgstr ""
+msgstr "按可跟踪属性筛选"
#: src/tables/part/PartTable.tsx:201
msgid "Filter by parts which have units"
-msgstr ""
+msgstr "按拥有单位的零件筛选"
#: src/tables/part/PartTable.tsx:206
msgid "Has IPN"
-msgstr ""
+msgstr "有内部零件编码"
#: src/tables/part/PartTable.tsx:207
msgid "Filter by parts which have an internal part number"
-msgstr ""
+msgstr "按具有内部零件编号的零件筛选"
#: src/tables/part/PartTable.tsx:212
msgid "Has Stock"
-msgstr ""
+msgstr "有库存"
#: src/tables/part/PartTable.tsx:213
msgid "Filter by parts which have stock"
-msgstr ""
+msgstr "按有库存的零件筛选"
#: src/tables/part/PartTable.tsx:219
msgid "Filter by parts which have low stock"
-msgstr ""
+msgstr "按库存少的零件筛选"
#: src/tables/part/PartTable.tsx:224
msgid "Purchaseable"
-msgstr ""
+msgstr "可购买"
#: src/tables/part/PartTable.tsx:225
msgid "Filter by parts which are purchaseable"
-msgstr ""
+msgstr "按可购买的零件筛选"
#: src/tables/part/PartTable.tsx:230
msgid "Salable"
-msgstr ""
+msgstr "可销售"
#: src/tables/part/PartTable.tsx:231
msgid "Filter by parts which are salable"
-msgstr ""
+msgstr "按可出售的零件筛选"
#: src/tables/part/PartTable.tsx:237
msgid "Filter by parts which are virtual"
-msgstr ""
+msgstr "按虚拟零件筛选"
#: src/tables/part/PartTable.tsx:241
msgid "Not Virtual"
+msgstr "非虚拟的"
+
+#: src/tables/part/PartTestTemplateTable.tsx:47
+msgid "Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:49
+msgid "No Results"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:52
+#: src/tables/part/PartTestTemplateTable.tsx:71
msgid "Show required tests"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:56
+#: src/tables/part/PartTestTemplateTable.tsx:75
msgid "Show tests that require a value"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:60
+#: src/tables/part/PartTestTemplateTable.tsx:79
msgid "Show tests that require an attachment"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:80
-#: src/tables/part/PartTestTemplateTable.tsx:135
+#: src/tables/part/PartTestTemplateTable.tsx:83
+msgid "Include Inherited"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:84
+msgid "Show tests from inherited templates"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:88
+msgid "Has Results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:89
+msgid "Show tests which have recorded results"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:109
+#: src/tables/part/PartTestTemplateTable.tsx:178
msgid "Add Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:93
+#: src/tables/part/PartTestTemplateTable.tsx:122
msgid "Edit Test Template"
msgstr ""
-#: src/tables/part/PartTestTemplateTable.tsx:101
+#: src/tables/part/PartTestTemplateTable.tsx:130
msgid "Delete Test Template"
msgstr ""
+#: src/tables/part/PartTestTemplateTable.tsx:132
+msgid "This action cannot be reversed"
+msgstr ""
+
+#: src/tables/part/PartTestTemplateTable.tsx:134
+msgid "Any tests results associated with this template will be deleted"
+msgstr ""
+
#: src/tables/part/PartThumbTable.tsx:202
msgid "Search..."
msgstr ""
#: src/tables/part/PartVariantTable.tsx:16
msgid "Show active variants"
-msgstr ""
+msgstr "显示激活的变体"
#: src/tables/part/PartVariantTable.tsx:20
msgid "Template"
-msgstr ""
+msgstr "模板"
#: src/tables/part/PartVariantTable.tsx:21
msgid "Show template variants"
-msgstr ""
+msgstr "显示模板变体"
#: src/tables/part/PartVariantTable.tsx:26
msgid "Show virtual variants"
-msgstr ""
+msgstr "显示虚拟变体"
#: src/tables/part/PartVariantTable.tsx:31
msgid "Show trackable variants"
-msgstr ""
+msgstr "显示可跟踪变体"
#: src/tables/part/RelatedPartTable.tsx:84
msgid "Add Related Part"
-msgstr ""
+msgstr "添加关联零件"
#: src/tables/part/RelatedPartTable.tsx:99
msgid "Delete Related Part"
-msgstr ""
+msgstr "删除关联零件"
#: src/tables/part/RelatedPartTable.tsx:106
msgid "Add related part"
-msgstr ""
+msgstr "添加关联零件"
#: src/tables/plugin/PluginErrorTable.tsx:29
msgid "Stage"
-msgstr ""
+msgstr "阶段"
#: src/tables/plugin/PluginListTable.tsx:113
msgid "Plugin with id {id} not found"
-msgstr ""
+msgstr "未找到 ID 为 {id} 的插件"
#: src/tables/plugin/PluginListTable.tsx:115
msgid "An error occurred while fetching plugin details"
-msgstr ""
+msgstr "获取插件详细信息时出错"
#: src/tables/plugin/PluginListTable.tsx:132
msgid "Plugin Actions"
-msgstr ""
+msgstr "插件操作"
#: src/tables/plugin/PluginListTable.tsx:136
#: src/tables/plugin/PluginListTable.tsx:139
msgid "Edit plugin"
-msgstr ""
+msgstr "编辑插件"
#: src/tables/plugin/PluginListTable.tsx:150
#: src/tables/plugin/PluginListTable.tsx:151
msgid "Reload"
-msgstr ""
+msgstr "重载"
#: src/tables/plugin/PluginListTable.tsx:164
msgid "Plugin information"
-msgstr ""
+msgstr "插件信息"
#: src/tables/plugin/PluginListTable.tsx:175
msgid "Author"
-msgstr ""
-
-#: src/tables/plugin/PluginListTable.tsx:180
-msgid "Date"
-msgstr ""
+msgstr "作者"
#: src/tables/plugin/PluginListTable.tsx:196
msgid "Package information"
-msgstr ""
+msgstr "软件包信息"
#: src/tables/plugin/PluginListTable.tsx:202
msgid "Package Name"
@@ -4328,87 +4379,87 @@ msgstr ""
#: src/tables/plugin/PluginListTable.tsx:229
msgid "Plugin settings"
-msgstr ""
+msgstr "插件设置"
#: src/tables/plugin/PluginListTable.tsx:246
msgid "Plugin is active"
-msgstr ""
+msgstr "此插件已激活"
#: src/tables/plugin/PluginListTable.tsx:252
msgid "Plugin is inactive"
-msgstr ""
+msgstr "插件未激活"
#: src/tables/plugin/PluginListTable.tsx:259
msgid "Plugin is not installed"
-msgstr ""
+msgstr "插件未安装"
#: src/tables/plugin/PluginListTable.tsx:282
msgid "Plugin"
-msgstr ""
+msgstr "插件"
#: src/tables/plugin/PluginListTable.tsx:304
msgid "Description not available"
-msgstr ""
+msgstr "描述不可用."
#: src/tables/plugin/PluginListTable.tsx:329
msgid "Activate Plugin"
-msgstr ""
+msgstr "激活插件"
#: src/tables/plugin/PluginListTable.tsx:329
msgid "Deactivate Plugin"
-msgstr ""
+msgstr "停用插件"
#: src/tables/plugin/PluginListTable.tsx:338
msgid "Confirm plugin activation"
-msgstr ""
+msgstr "确认插件激活"
#: src/tables/plugin/PluginListTable.tsx:339
msgid "Confirm plugin deactivation"
-msgstr ""
+msgstr "确认插件停用"
#: src/tables/plugin/PluginListTable.tsx:345
msgid "The following plugin will be activated"
-msgstr ""
+msgstr "以下插件将被激活"
#: src/tables/plugin/PluginListTable.tsx:346
msgid "The following plugin will be deactivated"
-msgstr ""
+msgstr "以下插件将被停用"
#: src/tables/plugin/PluginListTable.tsx:357
msgid "Confirm"
-msgstr ""
+msgstr "确认"
#: src/tables/plugin/PluginListTable.tsx:367
msgid "Activating plugin"
-msgstr ""
+msgstr "正在激活插件"
#: src/tables/plugin/PluginListTable.tsx:367
msgid "Deactivating plugin"
-msgstr ""
+msgstr "正在停用插件"
#: src/tables/plugin/PluginListTable.tsx:383
msgid "Plugin updated"
-msgstr ""
+msgstr "插件已更新!"
#: src/tables/plugin/PluginListTable.tsx:385
msgid "The plugin was activated"
-msgstr ""
+msgstr "插件已激活"
#: src/tables/plugin/PluginListTable.tsx:386
msgid "The plugin was deactivated"
-msgstr ""
+msgstr "插件已停用"
#: src/tables/plugin/PluginListTable.tsx:394
msgid "Error updating plugin"
-msgstr ""
+msgstr "更新插件时出错"
#: src/tables/plugin/PluginListTable.tsx:414
msgid "Deactivate"
-msgstr ""
+msgstr "停用"
#: src/tables/plugin/PluginListTable.tsx:423
msgid "Activate"
-msgstr ""
+msgstr "激活"
#: src/tables/plugin/PluginListTable.tsx:454
msgid "Uninstall"
@@ -4416,15 +4467,15 @@ msgstr ""
#: src/tables/plugin/PluginListTable.tsx:485
msgid "Install plugin"
-msgstr ""
+msgstr "安装插件"
#: src/tables/plugin/PluginListTable.tsx:498
msgid "Install"
-msgstr ""
+msgstr "安装"
#: src/tables/plugin/PluginListTable.tsx:502
msgid "Plugin installed successfully"
-msgstr ""
+msgstr "插件安装成功"
#: src/tables/plugin/PluginListTable.tsx:515
msgid "Uninstall Plugin"
@@ -4456,32 +4507,32 @@ msgstr ""
#: src/tables/plugin/PluginListTable.tsx:564
msgid "Plugins reloaded"
-msgstr ""
+msgstr "插件已重载"
#: src/tables/plugin/PluginListTable.tsx:565
msgid "Plugins were reloaded successfully"
-msgstr ""
+msgstr "插件重载成功"
#: src/tables/plugin/PluginListTable.tsx:581
msgid "Reload Plugins"
-msgstr ""
+msgstr "重载插件"
#: src/tables/plugin/PluginListTable.tsx:590
msgid "Install Plugin"
-msgstr ""
+msgstr "安装插件"
#: src/tables/plugin/PluginListTable.tsx:608
msgid "Plugin detail"
-msgstr ""
+msgstr "插件详情"
#: src/tables/plugin/PluginListTable.tsx:637
msgid "Sample"
-msgstr ""
+msgstr "样本"
#: src/tables/plugin/PluginListTable.tsx:642
-#: src/tables/stock/StockItemTable.tsx:279
+#: src/tables/stock/StockItemTable.tsx:280
msgid "Installed"
-msgstr ""
+msgstr "已安装"
#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:57
msgid "Edit Parameter"
@@ -4505,7 +4556,7 @@ msgstr ""
#: src/tables/purchasing/ManufacturerPartTable.tsx:56
msgid "Manufacturer Part Number"
-msgstr ""
+msgstr "制造商零件编号"
#: src/tables/purchasing/ManufacturerPartTable.tsx:75
msgid "Add Manufacturer Part"
@@ -4513,69 +4564,69 @@ msgstr ""
#: src/tables/purchasing/ManufacturerPartTable.tsx:94
msgid "Edit Manufacturer Part"
-msgstr ""
+msgstr "编辑制造商零件"
#: src/tables/purchasing/ManufacturerPartTable.tsx:97
msgid "Manufacturer part updated"
-msgstr ""
+msgstr "制造商零件已更新"
#: src/tables/purchasing/ManufacturerPartTable.tsx:108
msgid "Delete Manufacturer Part"
-msgstr ""
+msgstr "删除制造商零件"
#: src/tables/purchasing/ManufacturerPartTable.tsx:109
msgid "Manufacturer part deleted"
-msgstr ""
+msgstr "制造商零件已删除"
#: src/tables/purchasing/ManufacturerPartTable.tsx:111
msgid "Are you sure you want to remove this manufacturer part?"
-msgstr ""
+msgstr "您确定要删除此制造商零件吗?"
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:73
msgid "Part Description"
-msgstr ""
+msgstr "零件描述"
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:130
#: src/tables/purchasing/SupplierPartTable.tsx:123
msgid "Pack Quantity"
-msgstr ""
+msgstr "包装数量"
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:100
msgid "Total Quantity"
-msgstr ""
+msgstr "总数量"
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:116
msgid "Received"
-msgstr ""
+msgstr "已接收"
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:135
msgid "Supplier Code"
-msgstr ""
+msgstr "供应商代码"
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:142
msgid "Supplier Link"
-msgstr ""
+msgstr "供应商链接"
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:149
msgid "Manufacturer Code"
-msgstr ""
+msgstr "制造商编号"
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:157
msgid "Unit Price"
-msgstr ""
+msgstr "单价"
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:163
msgid "Destination"
-msgstr ""
+msgstr "目的地"
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:180
msgid "Add Line Item"
-msgstr ""
+msgstr "添加行项目"
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:195
msgid "Edit Line Item"
-msgstr ""
+msgstr "编辑行项目"
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:203
msgid "Delete Line Item"
@@ -4583,15 +4634,15 @@ msgstr ""
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:214
msgid "Receive line item"
-msgstr ""
+msgstr "接收这行项目"
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:245
msgid "Add line item"
-msgstr ""
+msgstr "添加行项目"
#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:251
msgid "Receive items"
-msgstr ""
+msgstr "收到项目"
#: src/tables/purchasing/PurchaseOrderTable.tsx:102
#: src/tables/purchasing/PurchaseOrderTable.tsx:119
@@ -4600,47 +4651,47 @@ msgstr ""
#: src/tables/purchasing/SupplierPartTable.tsx:91
msgid "MPN"
-msgstr ""
+msgstr "制造商零件编号 (MPN)"
#: src/tables/purchasing/SupplierPartTable.tsx:114
msgid "Base units"
-msgstr ""
+msgstr "基础单位"
#: src/tables/purchasing/SupplierPartTable.tsx:140
msgid "Updated"
-msgstr ""
+msgstr "已更新"
#: src/tables/purchasing/SupplierPartTable.tsx:159
msgid "Add Supplier Part"
-msgstr ""
+msgstr "添加供应商零件"
#: src/tables/purchasing/SupplierPartTable.tsx:162
msgid "Supplier part created"
-msgstr ""
+msgstr "供应商零件已更新"
#: src/tables/purchasing/SupplierPartTable.tsx:171
msgid "Add supplier part"
-msgstr ""
+msgstr "添加供应商零件"
#: src/tables/purchasing/SupplierPartTable.tsx:193
msgid "Edit Supplier Part"
-msgstr ""
+msgstr "编辑供应商零件"
#: src/tables/purchasing/SupplierPartTable.tsx:196
msgid "Supplier part updated"
-msgstr ""
+msgstr "供应商零件已更新"
#: src/tables/purchasing/SupplierPartTable.tsx:207
msgid "Delete Supplier Part"
-msgstr ""
+msgstr "删除供应商零件"
#: src/tables/purchasing/SupplierPartTable.tsx:208
msgid "Supplier part deleted"
-msgstr ""
+msgstr "供应商零件已删除"
#: src/tables/purchasing/SupplierPartTable.tsx:210
msgid "Are you sure you want to remove this supplier part?"
-msgstr ""
+msgstr "确定要删除此供应商零件吗?"
#: src/tables/sales/ReturnOrderTable.tsx:99
msgid "Add Return Order"
@@ -4653,23 +4704,23 @@ msgstr ""
#: src/tables/sales/SalesOrderTable.tsx:111
msgid "Customer Reference"
-msgstr ""
+msgstr "客户参考"
#: src/tables/settings/CurrencyTable.tsx:28
msgid "Rate"
-msgstr ""
+msgstr "汇率"
#: src/tables/settings/CurrencyTable.tsx:40
msgid "Exchange rates updated"
-msgstr ""
+msgstr "汇率已更新"
#: src/tables/settings/CurrencyTable.tsx:46
msgid "Exchange rate update error"
-msgstr ""
+msgstr "汇率更新错误"
#: src/tables/settings/CurrencyTable.tsx:57
msgid "Refresh currency exchange rates"
-msgstr ""
+msgstr "刷新货币汇率"
#: src/tables/settings/CustomUnitsTable.tsx:50
msgid "Add Custom Unit"
@@ -4685,100 +4736,100 @@ msgstr ""
#: src/tables/settings/CustomUnitsTable.tsx:100
msgid "Add custom unit"
-msgstr ""
+msgstr "添加自定义单位"
#: src/tables/settings/ErrorTable.tsx:29
msgid "When"
-msgstr ""
+msgstr "当"
#: src/tables/settings/ErrorTable.tsx:34
msgid "Path"
-msgstr ""
+msgstr "路径"
#: src/tables/settings/ErrorTable.tsx:39
msgid "Error Information"
-msgstr ""
+msgstr "错误信息"
#: src/tables/settings/ErrorTable.tsx:51
msgid "Delete error report"
-msgstr ""
+msgstr "删除错误报告"
#: src/tables/settings/ErrorTable.tsx:53
msgid "Error report deleted"
-msgstr ""
+msgstr "错误报告已删除"
#: src/tables/settings/ErrorTable.tsx:54
msgid "Are you sure you want to delete this error report?"
-msgstr ""
+msgstr "确定要删除这错误告吗?"
#: src/tables/settings/ErrorTable.tsx:67
#: src/tables/settings/FailedTasksTable.tsx:57
msgid "Error Details"
-msgstr ""
+msgstr "错误详情"
#: src/tables/settings/FailedTasksTable.tsx:24
#: src/tables/settings/PendingTasksTable.tsx:17
#: src/tables/settings/ScheduledTasksTable.tsx:19
msgid "Task"
-msgstr ""
+msgstr "任务"
#: src/tables/settings/FailedTasksTable.tsx:30
#: src/tables/settings/PendingTasksTable.tsx:22
msgid "Task ID"
-msgstr ""
+msgstr "任务ID"
#: src/tables/settings/FailedTasksTable.tsx:34
msgid "Started"
-msgstr ""
+msgstr "已开始"
#: src/tables/settings/FailedTasksTable.tsx:40
msgid "Stopped"
-msgstr ""
+msgstr "已停止"
#: src/tables/settings/FailedTasksTable.tsx:46
msgid "Attempts"
-msgstr ""
+msgstr "尝试次数"
#: src/tables/settings/GroupTable.tsx:51
msgid "Group with id {id} not found"
-msgstr ""
+msgstr "未找到 ID 为 {id} 的群组"
#: src/tables/settings/GroupTable.tsx:53
msgid "An error occurred while fetching group details"
-msgstr ""
+msgstr "获取群组详细信息时出错"
#: src/tables/settings/GroupTable.tsx:77
msgid "Permission set"
-msgstr ""
+msgstr "权限设置"
#: src/tables/settings/GroupTable.tsx:126
msgid "Delete group"
-msgstr ""
+msgstr "删除群组"
#: src/tables/settings/GroupTable.tsx:127
msgid "Group deleted"
-msgstr ""
+msgstr "群组已删除"
#: src/tables/settings/GroupTable.tsx:129
msgid "Are you sure you want to delete this group?"
-msgstr ""
+msgstr "确定要删除这个群组吗?"
#: src/tables/settings/GroupTable.tsx:134
#: src/tables/settings/GroupTable.tsx:146
msgid "Add group"
-msgstr ""
+msgstr "添加群组"
#: src/tables/settings/GroupTable.tsx:158
msgid "Edit group"
-msgstr ""
+msgstr "编辑群组"
#: src/tables/settings/PendingTasksTable.tsx:30
msgid "Created"
-msgstr ""
+msgstr "已创建"
#: src/tables/settings/PendingTasksTable.tsx:36
msgid "Arguments"
-msgstr ""
+msgstr "参数"
#: src/tables/settings/ProjectCodeTable.tsx:42
msgid "Add Project Code"
@@ -4794,245 +4845,333 @@ msgstr ""
#: src/tables/settings/ProjectCodeTable.tsx:94
msgid "Add project code"
-msgstr ""
+msgstr "编辑项目编码"
#: src/tables/settings/ScheduledTasksTable.tsx:25
msgid "Last Run"
-msgstr ""
+msgstr "上一次运行"
#: src/tables/settings/ScheduledTasksTable.tsx:47
msgid "Next Run"
-msgstr ""
+msgstr "下一次运行"
#: src/tables/settings/UserTable.tsx:66
msgid "User with id {id} not found"
-msgstr ""
+msgstr "未找到 ID 为 {id} 的用户"
#: src/tables/settings/UserTable.tsx:68
msgid "An error occurred while fetching user details"
-msgstr ""
+msgstr "获取用户详细信息时出错"
#: src/tables/settings/UserTable.tsx:86
msgid "Is Active"
-msgstr ""
+msgstr "激活"
#: src/tables/settings/UserTable.tsx:87
msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts."
-msgstr ""
+msgstr "指定是否将此用户视为激活用户。取消选择此选项将不会删除账户。"
#: src/tables/settings/UserTable.tsx:91
msgid "Is Staff"
-msgstr ""
+msgstr "员工"
#: src/tables/settings/UserTable.tsx:92
msgid "Designates whether the user can log into the django admin site."
-msgstr ""
+msgstr "指定用户是否可以登录 django 管理页面。"
#: src/tables/settings/UserTable.tsx:96
msgid "Is Superuser"
-msgstr ""
+msgstr "超级用户"
#: src/tables/settings/UserTable.tsx:97
msgid "Designates that this user has all permissions without explicitly assigning them."
-msgstr ""
+msgstr "指定该用户拥有所有权限,而无需明确分配。"
#: src/tables/settings/UserTable.tsx:107
msgid "You cannot edit the rights for the currently logged-in user."
-msgstr ""
+msgstr "您不能编辑当前登录用户的权限。"
#: src/tables/settings/UserTable.tsx:133
msgid "No groups"
-msgstr ""
+msgstr "没有群组"
#: src/tables/settings/UserTable.tsx:201
msgid "Delete user"
-msgstr ""
+msgstr "删除用户"
#: src/tables/settings/UserTable.tsx:202
msgid "User deleted"
-msgstr ""
+msgstr "用户已删除"
#: src/tables/settings/UserTable.tsx:204
msgid "Are you sure you want to delete this user?"
-msgstr ""
+msgstr "您确定要删除该用户吗?"
#: src/tables/settings/UserTable.tsx:214
#: src/tables/settings/UserTable.tsx:230
msgid "Add user"
-msgstr ""
+msgstr "添加用户"
#: src/tables/settings/UserTable.tsx:222
msgid "Added user"
-msgstr ""
+msgstr "已添加用户"
#: src/tables/settings/UserTable.tsx:239
msgid "Edit user"
-msgstr ""
+msgstr "编辑用户"
-#: src/tables/stock/StockItemTable.tsx:59
+#: src/tables/stock/StockItemTable.tsx:60
msgid "This stock item is in production"
-msgstr ""
+msgstr "该库存项正在生产"
-#: src/tables/stock/StockItemTable.tsx:68
+#: src/tables/stock/StockItemTable.tsx:69
msgid "This stock item has been assigned to a sales order"
-msgstr ""
+msgstr "库存项已分配到销售订单"
-#: src/tables/stock/StockItemTable.tsx:77
+#: src/tables/stock/StockItemTable.tsx:78
msgid "This stock item has been assigned to a customer"
-msgstr ""
+msgstr "库存项已分配给客户"
-#: src/tables/stock/StockItemTable.tsx:86
+#: src/tables/stock/StockItemTable.tsx:87
msgid "This stock item is installed in another stock item"
-msgstr ""
+msgstr "此库存项已安装在另一个库存项中"
-#: src/tables/stock/StockItemTable.tsx:95
+#: src/tables/stock/StockItemTable.tsx:96
msgid "This stock item has been consumed by a build order"
-msgstr ""
+msgstr "此库存项已被生产订单消耗"
-#: src/tables/stock/StockItemTable.tsx:104
+#: src/tables/stock/StockItemTable.tsx:105
msgid "This stock item has expired"
-msgstr ""
+msgstr "此库存项已过期"
-#: src/tables/stock/StockItemTable.tsx:108
+#: src/tables/stock/StockItemTable.tsx:109
msgid "This stock item is stale"
-msgstr ""
+msgstr "此库存项是过期项"
-#: src/tables/stock/StockItemTable.tsx:119
+#: src/tables/stock/StockItemTable.tsx:120
msgid "This stock item is fully allocated"
-msgstr ""
+msgstr "此库存项已完全分配"
-#: src/tables/stock/StockItemTable.tsx:126
+#: src/tables/stock/StockItemTable.tsx:127
msgid "This stock item is partially allocated"
-msgstr ""
+msgstr "此库存项已被部分分配"
-#: src/tables/stock/StockItemTable.tsx:155
+#: src/tables/stock/StockItemTable.tsx:156
msgid "This stock item has been depleted"
-msgstr ""
+msgstr "库存项已耗尽"
-#: src/tables/stock/StockItemTable.tsx:229
+#: src/tables/stock/StockItemTable.tsx:230
msgid "Show stock for active parts"
-msgstr ""
+msgstr "显示激活零件的库存"
-#: src/tables/stock/StockItemTable.tsx:234
+#: src/tables/stock/StockItemTable.tsx:235
msgid "Filter by stock status"
-msgstr ""
+msgstr "根据库存状态筛选"
-#: src/tables/stock/StockItemTable.tsx:240
+#: src/tables/stock/StockItemTable.tsx:241
msgid "Show stock for assmebled parts"
-msgstr ""
+msgstr "显示装配零件的库存"
-#: src/tables/stock/StockItemTable.tsx:244
+#: src/tables/stock/StockItemTable.tsx:245
msgid "Allocated"
-msgstr ""
+msgstr "已分配"
-#: src/tables/stock/StockItemTable.tsx:245
+#: src/tables/stock/StockItemTable.tsx:246
msgid "Show items which have been allocated"
-msgstr ""
+msgstr "显示已分配的项目"
-#: src/tables/stock/StockItemTable.tsx:250
+#: src/tables/stock/StockItemTable.tsx:251
msgid "Show items which are available"
-msgstr ""
+msgstr "显示可用的项目"
-#: src/tables/stock/StockItemTable.tsx:254
+#: src/tables/stock/StockItemTable.tsx:255
#: src/tables/stock/StockLocationTable.tsx:37
msgid "Include Sublocations"
-msgstr ""
+msgstr "包括子地点"
-#: src/tables/stock/StockItemTable.tsx:255
+#: src/tables/stock/StockItemTable.tsx:256
msgid "Include stock in sublocations"
-msgstr ""
+msgstr "包括子地点的库存"
-#: src/tables/stock/StockItemTable.tsx:259
+#: src/tables/stock/StockItemTable.tsx:260
msgid "Depleted"
-msgstr ""
+msgstr "耗尽"
-#: src/tables/stock/StockItemTable.tsx:260
+#: src/tables/stock/StockItemTable.tsx:261
msgid "Show depleted stock items"
-msgstr ""
+msgstr "显示耗尽的库存项"
-#: src/tables/stock/StockItemTable.tsx:265
+#: src/tables/stock/StockItemTable.tsx:266
msgid "Show items which are in stock"
-msgstr ""
+msgstr "显示库存中的项目"
-#: src/tables/stock/StockItemTable.tsx:269
+#: src/tables/stock/StockItemTable.tsx:270
msgid "In Production"
-msgstr ""
+msgstr "生产中"
-#: src/tables/stock/StockItemTable.tsx:270
+#: src/tables/stock/StockItemTable.tsx:271
msgid "Show items which are in production"
-msgstr ""
+msgstr "显示正在生产的项目"
-#: src/tables/stock/StockItemTable.tsx:275
+#: src/tables/stock/StockItemTable.tsx:276
msgid "Include stock items for variant parts"
-msgstr ""
+msgstr "包括变体零件的库存项"
-#: src/tables/stock/StockItemTable.tsx:280
+#: src/tables/stock/StockItemTable.tsx:281
msgid "Show stock items which are installed in other items"
-msgstr ""
+msgstr "显示安装在其他项目中的库存项"
-#: src/tables/stock/StockItemTable.tsx:284
+#: src/tables/stock/StockItemTable.tsx:285
msgid "Sent to Customer"
-msgstr ""
+msgstr "发送给客户"
-#: src/tables/stock/StockItemTable.tsx:285
+#: src/tables/stock/StockItemTable.tsx:286
msgid "Show items which have been sent to a customer"
-msgstr ""
+msgstr "显示已发送给客户的项目"
-#: src/tables/stock/StockItemTable.tsx:289
+#: src/tables/stock/StockItemTable.tsx:290
msgid "Is Serialized"
-msgstr ""
+msgstr "已序列化"
-#: src/tables/stock/StockItemTable.tsx:290
+#: src/tables/stock/StockItemTable.tsx:291
msgid "Show items which have a serial number"
-msgstr ""
+msgstr "显示带有序列号的项目"
-#: src/tables/stock/StockItemTable.tsx:297
+#: src/tables/stock/StockItemTable.tsx:298
msgid "Has Batch Code"
-msgstr ""
+msgstr "有批号"
-#: src/tables/stock/StockItemTable.tsx:298
+#: src/tables/stock/StockItemTable.tsx:299
msgid "Show items which have a batch code"
-msgstr ""
+msgstr "显示有批号的项目"
-#: src/tables/stock/StockItemTable.tsx:303
+#: src/tables/stock/StockItemTable.tsx:304
msgid "Tracked"
-msgstr ""
+msgstr "已跟踪"
-#: src/tables/stock/StockItemTable.tsx:304
+#: src/tables/stock/StockItemTable.tsx:305
msgid "Show tracked items"
-msgstr ""
+msgstr "显示已跟踪项目"
-#: src/tables/stock/StockItemTable.tsx:308
+#: src/tables/stock/StockItemTable.tsx:309
msgid "Has Purchase Price"
-msgstr ""
+msgstr "有采购价格"
-#: src/tables/stock/StockItemTable.tsx:309
+#: src/tables/stock/StockItemTable.tsx:310
msgid "Show items which have a purchase price"
-msgstr ""
+msgstr "显示有购买价格的项目"
-#: src/tables/stock/StockItemTable.tsx:317
+#: src/tables/stock/StockItemTable.tsx:318
msgid "External Location"
-msgstr ""
+msgstr "外部地点"
-#: src/tables/stock/StockItemTable.tsx:318
+#: src/tables/stock/StockItemTable.tsx:319
msgid "Show items in an external location"
+msgstr "显示外部库存地点的项目"
+
+#: src/tables/stock/StockItemTestResultTable.tsx:124
+msgid "Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:140
+msgid "Test Results"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:147
+msgid "Test result for installed stock item"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:158
+msgid "Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:164
+msgid "No Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:180
+msgid "Attachment"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:233
+#: src/tables/stock/StockItemTestResultTable.tsx:300
+#: src/tables/stock/StockItemTestResultTable.tsx:355
+msgid "Add Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:235
+msgid "Test result added"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:246
+#: src/tables/stock/StockItemTestResultTable.tsx:310
+msgid "Edit Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:248
+msgid "Test result updated"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:319
+msgid "Delete Test Result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:256
+msgid "Test result deleted"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:270
+msgid "Test Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:271
+msgid "Test result has been recorded"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:288
+msgid "Pass Test"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:336
+msgid "Required"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:337
+msgid "Show results for required tests"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:341
+msgid "Include Installed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:342
+msgid "Show results for installed stock items"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:346
+msgid "Passed"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:347
+msgid "Show only passed tests"
msgstr ""
#: src/tables/stock/StockLocationTable.tsx:38
msgid "Include sublocations in results"
-msgstr ""
+msgstr "在结果中包含子地点"
#: src/tables/stock/StockLocationTable.tsx:42
msgid "Show structural locations"
-msgstr ""
+msgstr "显示结构性地点"
#: src/tables/stock/StockLocationTable.tsx:46
msgid "Show external locations"
-msgstr ""
+msgstr "显示外部地点"
#: src/tables/stock/StockLocationTable.tsx:50
msgid "Has location type"
-msgstr ""
+msgstr "有位置类型"
#: src/tables/stock/StockLocationTable.tsx:87
#: src/tables/stock/StockLocationTable.tsx:116
@@ -5045,13 +5184,13 @@ msgstr ""
#: src/views/MobileAppView.tsx:14
msgid "Mobile viewport detected"
-msgstr ""
+msgstr "检测到手机视图"
#: src/views/MobileAppView.tsx:17
msgid "Platform UI is optimized for Tablets and Desktops, you can use the official app for a mobile experience."
-msgstr ""
+msgstr "Platform UI 针对平板电脑和台式机进行了优化,您可以使用官方应用程序获得移动体验。"
#: src/views/MobileAppView.tsx:23
msgid "Read the docs"
-msgstr ""
+msgstr "阅读文档"